Перезагрузка роутера через telnet и аппаратно в ubuntu 16.04 - bash

Тип статьи:
Авторская

Имеется роутер который по неизвестным причинам не теряет связь с интернетом и периодически ситуацию может решить только аппаратная перезагрузка. Специально для этого сваял скрипт. Аппаратная перезагрузка происходит посредством размыкания цепи питания идущего к роутеру. Цепь размыкается благодаря выдвижению cd привода.

#!/bin/bash
### BEGIN INIT INFO
# Provides:          reset-router.sh
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Производит перезагрузку роутера в случае дисконнекта
# Description:       Производит перезагрузку роутера в случае отсутствия от него  ответа. В тяжёлых случая происходит открытие лотка CD-ROM который физически отключает роутер. В нормальном режиме дисконнект происходит через telnet
### END INIT INFO
login_sagem="admin"
pass_sagem="admin"
ip_sagem="192.168.1.1"
var=$(ping $ip_sagem -c 2 | grep transmitted | cut -d' ' -f 4)
if [ $var -eq "0" ]
then
        eject
        sleep 3
        echo "0" >> /dev/cdrom
        timeout 180
fi
var=$(ping ya.ru -c 3 | grep transmitted | cut -d' ' -f 4)
if [ $var -eq "0" ]
then
        (
        sleep 5
        echo "$login_sagem"
        sleep 1
        echo "$pass_sagem"
        sleep 1
        echo "reboot"
        sleep 1
        echo "exit"
        ) | telnet $ip_sagem
        echo "ok"
        sleep 180
fi
sleep 1

if [ "$input" = "setup" ]
then
        echo "$input"
        cp `dirname $0`/reset-router.sh /etc/init.d/
        echo "ok cp"
        chmod +x /etc/init.d/reset-router.sh
        echo "ok_chmod"
        update-rc.d reset-router.sh defaults
        echo "ok_update"
else
        `dirname $0`/reset-router.sh &
fi

установка:

sudo sh reset-router.sh setup

Источники:

http://wiki.dieg.info/update-rc.d


331

Комментарии

Нет комментариев. Ваш будет первым!