Я "решил" свою проблему, используя ssh
для создания временного файла на клиенте
ssh -o ConnectTimeout=5 USER@CLIENT_HOST '/usr/bin/touch /tmp/watchdog.hook'
Это вызывалось cron каждую минуту на моем сервере с помощью команды cron ниже
* * * * * /path/to/script/watchdog-server.sh
На стороне клиента я пытаюсь удалить временный файл, и если это не удается, счетчик будет увеличиваться, и если он равен трем, он перезагрузит сеть, а если равен пяти, он перезагрузит машину. В случае успеха счетчик будет сброшен.
counter_file="/tmp/watchdog.counter"
if [ ! -f "$counter_file" ]; then
printf '0\n' >"$counter_file"
fi
counter_curr=$(< "$counter_file")
rm /tmp/watchdog.hook
if [ $? -eq 0 ]; then
counter_curr=0
else
(( ++counter_curr ))
if [ "$counter_curr" -eq 3 ]; then
echo "No network connection, restarting wlan0 at $(date)"
/sbin/ifdown 'wlan0'
sleep 5
/sbin/ifup --force 'wlan0'
elif [ "$counter_curr" -ge 5 ]; then
echo "No network connection, rebooting machine at $(date)"
/sbin/shutdown -r now
fi
fi
printf '%s\n' "$counter_curr" >"$counter_file"
Мы хотим подождать 30 секунд перед запуском скрипта на клиенте, поэтому добавим в cron следующее:
* * * * * ( sleep 30 ; /path/to/script/watchdog-client.sh )
Нет, стандартная od
утилита не может создавать дампы данных в виде двоичных чисел (в виде символов 0
и 1
только ), равно как и реализация GNU coreutils или реализация od
, найденная в большинстве систем BSD.
Сast-open
od
или встроенным od
из ksh93
, если он построен как часть ast -, вы можете использовать-t b
:
$ ksh -c 'echo x | command /opt/ast/bin/od -tb'
0000000 01111000 00001010
0000002