Устанавливаем expect
sudo apt-get install expect
в каталоге root создаем подкатолог skripts и туда скидываем скрипты modem_test.sh и modem_reboot.sh
скрипт modem_reboot.sh
#!/usr/bin/expect
spawn telnet xxx.xxx.xxx.xxx
sleep 3
expect "login:"
send "admin\\r"
sleep 3
expect "Password:"
send "admin\\r"
sleep 3
expect "#"
send "reboot\\r"
sleep 3
expect eof
Меняем Password и login при необходимости, а также xxx.xxx.xxx.xxx на адрес своего модема
скрипт modem_test.sh
#!/bin/bash
# часы
date_time="`date +%H:%M:%S`"
# дата
date="`date +%d-%m-%Y`"
#Тестируемый адрес
testip="xxx.xxx.xxx.xxx"
kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
sleep 10
kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
/root/skripts/modem_reboot.sh
echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time' Нет интернета. Начат перезапуск модема.</p>' >> /var/www/html/netsrv.info/status.html
echo $date $date_time Нет интернета. Начат перезапуск модема. >> /var/log/restartinet.log
exit 0
fi
fi
echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time' Интернет есть..</p>' >> /var/www/html/netsrv.info/status.html
echo $date $date_time Интернет есть.. >> /var/log/restartinet.log
“xxx.xxx.xxx.xxx” вводим адрес своего DNS
теперь при детальном рассмотрении скрипта видем строчку /root/skripts/modem_reboot.sh которая гласит, что при отсутствии интернета скрипт modem_test.sh обращается к скрипту modem_reboot.sh и если Вы скрипты поместили в директорию /root/skripts/ то эту строку оставляем без изменений.
а также видем строки /var/www/html/netsrv.info/status.html и /var/log/restartinet.log естественно в каталоге /var создаем эти подкаталоги и файлы под запись логов
делаем скрипты исполняемыми
sudo chmod +x /root/skripts/modem_test.sh
sudo chmod +x /root/skripts/modem_reboot.sh
даем скриптам права
sudo chmod 750 /root/skripts/modem_test.sh
sudo chmod 750 /root/skripts/modem_reboot.sh
вызываем crontab
sudo crontab -e
в crontab ввести
*/10 * * * * /root/skripts/modem_test.sh
что говорит о том, что cron будет запускать скрипт каждые десять минут
сохранить Ctrl+O потом нажать Enter и выйти Ctrl+X
От себя добавлю, что автор скриптов ссылку на которого я привел выше не рекомендует устанавливать значение меньше десяти минут. Я же поставил 30 минут, но это уже решать только Вам (более подробную информацию о cron найдете сами)
Еще хочу отметить тот факт, что это не панацея если модем завис наглухо и в этот момент нельзя выйти даже в вебморду модема, тут уже “линь” не причем. ))
PS благодарность Gucul за инструкцию.