Программная автоматическая перезагрузка модема

Программная автоматическая перезагрузка модема

Устанавливаем 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 за инструкцию.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *