LINUX.ORG.RU

Скрипт для перезагрузки модема через telnet


0

0

Есть странная особенность у сетевых ADSL модемов - переодически отваливается внешнее подключение, автоматически почему-то не восстанавливается, но восстанавливается после перезагрузки.
Хотелось бы шелл скрипт который по крону (например раз в минуту) мониторит доступнусть внешнего хоста (например ping -c2 122.44.22.33) анализирует ответ (например если потери 100% - то всё плохо) и если всё плохо, то делает
telnet 192.168.0.1
reboot
exit

может видал кто аналогичные скрипты?

★★★★★

Re: Скрипт для перезагрузки модема через telnet

>у сетевых ADSL модемов

Производитель/модель? Прошивку обновлял?

Davidov ★★★★ ()

Re: Скрипт для перезагрузки модема через telnet

1. man ping

> If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.

2. man expect

kemm ()

Re: Скрипт для перезагрузки модема через telnet

Я такое через netcat делал. Примерно так:

#!/bin/sh

ping -c 2 122.44.22.33 >/dev/null 2>&1 && exit

(
    sleep 3
    echo 'login'
    sleep 3
    echo 'password'
    sleep 3
    echo 'reboot'
    sleep 3
) | nc 192.168.0.1 23 >/dev/null

Deleted ()

Re: Скрипт для перезагрузки модема через telnet

Я себе сделал .desktop с такой командой:

if (kdialog --warningcontinuecancel "Сбросить модем нахуй?"); then (T=0.1;sleep $T; echo <пароль>; sleep $T; echo 24;sleep $T; echo 4; sleep $T; echo 1; sleep $T) | telnet modem; fi

Правда оно сбрасывает adsl-соединение, а не ребутает модем.

Это для zyxel 660. Правда, после обновления прошивки необходимость в резете отпала.

legolegs ★★★★★ ()

Re: Скрипт для перезагрузки модема через telnet

да я бы много чего туда засунул, вот только там система на столько кастрировнная что засунуть туда нифига не получится. Там даже команду ls выдрали (вместе с остальными "ненужными" командами) это я про 2540u

af5 ★★★★★ ()

Re: Скрипт для перезагрузки модема через telnet

вобщем получился такой скриптец

#!/usr/bin/expect -f
spawn telnet 192.168.0.1
expect "login:" {send "admin\n"}
expect "Password:" {send "admin\n"}
expect "#" { send "ping -c 2 xx.xx.xx.xx ||reboot\n"}
expect "#" { send "exit\n"}
expect eof

af5 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.