потребовалось странное: на "смарт" тв запустить информационное табло. желательно предельно малой кровью. и как обычно надо еще вчера.
про сами устройства я упоминал ранее. усе грустно и печально. программы автоматизаторы а ля tasker не заработали от слова совсем. немного подумав пришел к выводу, что проще всего будет не рассчитывать на вумность зомбоящика и взять его на удаленное управление через открытый порт adb.
для "киоска" идеально подошел firefox в варианте для tv. его же надо выбирать как браузер по умолчанию
соответственно на внутреннем веб сервере поселился "жутко сложный" скрипт аж на 10 строк
#!/bin/bash
tv_info_table()
{
adb connect $1
sleep 1
android.intent.action.VIEW 'tablo_server/qwertyuioop.php'
adb disconnect $1
}
tv_info_table android_host_tv_tv
И внезапно оказалось что у нас все как в анекдоте "то света нет, то воды" и нужно узнавать что
1. хост упал
2. хост поднялся
ну и само собой
если хост упал то один раз выполнить полезную нагрузку
если хост поднялся то один раз выполнить полезную нагрузку
в итоге родился скрипт вида.
#!/bin/bash
remove_error_flag()
{
if [ -f tv-list/$1 ]
then
rm tv-list/$1
# todo: тут полезная нагрузка которая должна выполняться при включении хоста
fi
}
set_error_flag()
{
if [ ! -f tv-list/$1 ] then
echo date>tv-list/$1
# todo: тут полезная нагрузка которая должна выполняться при выключении хоста
fi
}
check_tv()
{
ping -c1 -w1 -q $1 >/dev/null && remove_error_flag $1 >/dev/null || set_error_flag $1 >/dev/null
# ping -c1 -w1 -q $1 - отослать один пинг. ждать ответа секунду. не выводить мусор
# && remove_error_flag пинг закончился успешно. выполнить remove_error_flag
#|| set_error_flag $1 хост не ответил на пинг и надо выполнять set_error_flag
}