Online video hd

Смотреть красивые девушки видео

Официальный сайт seoturbina 24/7/365

Смотреть видео бесплатно

xT 25.02.2009 12:20

How-to`sПростой скрипт мониторинга связи и рестарта ADSL-модема

Несколько дней назад писал сей текст на Хабр в Песочницу, но дальше дело не пошло; расстроился не сильно =) напишу и сюда, может пригодиться кому...

Имеем на входе нестабильную АДСЛ-линию, где периодически и бессистемно пропадает связь, причем соединение на модеме не рветься, и он продолжает "думать" что все ОК.

На выходе имеем простой скрипт проверки доступности связи и рестарта адсл-модема, если эта связь отсутствует

В наличии:
Debian 4.0 r5
ZyXEL P660RU2 EE

Для отправки модему команд нам понадобиться утилитка expect. Поэтому установим ее:
1
apt-get install expect


Cкрипт перезагрузки ADSL-линии
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/expect
#Адрес модема
set MyModem "xxx.xxx.xxx.xxx"

#Пароль модема
set MyPass "xxxxxxxxxxxx"

#Соединяемся с модемом через телнет:
spawn telnet $MyModem

#Ожидаем запроса пароля:
expect "Password:"

#Посылаем пароль, который мы определили выше:
send "$MyPass\r"

#Ожидаем приглашения ввода консоли модема:
expect "P660RU2>"

#Посылаем модему сигнал закрытия ADSL-линии
send "wan adsl close\r"

#Ждем пару секунд
sleep 2

#Ожидаем приглашения ввода консоли модема:
expect "P660RU2>"

#Посылаем модему сигнал открытия ADSL-линии
send "wan adsl open\r"

#Посылаем модему сигнал выхода из консоли
send "exit\r"

#Ждем символа конца строки
expect eof



Сохраним данный скрипт в каком-либо месте ( у меня это /usr/local/bin ), с произвольным именем ( у меня modem_adsl_restart )

Дадим ему права на запуск:
1
chmod +x /usr/local/bin/modem_adsl_restart



Скрипт, проверяющий наличие откликов от удаленных серверов

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash

#Определяем какие хосты мы будем пинговать
HOSTS="213.180.204.8 74.125.45.100 195.162.32.5"

#Определяем адрес модема
MYMODEM="192.168.10.245"

#Определяем количество пингов на каждый хост
COUNT=3

#Инициализируем переменную, хранящую количество положительных откликов
goodping=0

#Функция получения числа откликов от нужного хоста
function tuktuk()
{
ping -c $COUNT $1 | grep 'received' | awk -F',' '{print $2}' | awk '{ print $1 }'
}

#Проверяем доступен ли сам модем, если он доступен, то приступаем к проверке доступности ресурсов
count=$(tuktuk $MYMODEM)
if < $count -ne 0 >; then
#Циклично проверяем каждый хост из списка
for myHost in $HOSTS
do
#Получаем отклики от хоста
count=$(tuktuk $HOSTS)
if < $count -eq 0 >; then
#Если откликов нет, то выводим сообщение
echo "$(date) ping to $myHost is failed :("
else
#Если отклики есть, то складываем их в переменную, и выводим сообщение.
let "goodping = $goodping + $count"
echo "$(date) ping to $myHost is very nice :)"
fi
done

#Проверяем общее количество откликов, если оно равно нулю, то выполняем скрипт перезагрузки адсл-линии
if < $goodping -eq 0 >; then
echo "All pings failed... restarting.."
/usr/local/bin/modem_adsl_restart
echo "ADSL line restarted"
fi
else
#Если же модем недоступен (выключен, выпал кабель и т.д. и т.п.), то выводим сообщение о его недоступности
echo "$MYMODEM is not available :("
fi



Сохраняем там же где и предыдущий скрипт (не суть важно где, у меня опять же /usr/local/bin) c произвольным именем (у меня это ping_test)

Даем права на запуск:
1
chmod +x /usr/local/bin/ping_test



Лог
Для сохранения вывода наших скриптов создадим директорию и файл в /var/log
1
2
mkdir /var/log/ping_test
touch /var/log/ping_test/pinglog.log



Планировщик
Для того, чтобы скрипт вызывался периодически, добавим задание в cron:
Создаем в папке /etc/cron.d/ файл с произвольным именем (у меня это modem) и пишем в него

1
*/3 * * * * root if < -x /usr/local/bin/ping_test > && < -x /usr/local/bin/modem_adsl_restart >; then /usr/local/bin/ping_test >> /var/log/ping_test/pinglog.log 2>&1; fi


Т.е. каждые три минуты проверяем, есть ли права на запуск у наших скриптов, если есть, то запускаем проверку откликов и перенаправляем вывод в наш лог-файл.

Собственно, всё. Теперь ждем пока пропадёт сигнал и сработают наши скрипты :)


Тэги: adsl bash cron expect ping модем мониторинг скриптинг
+ 10 -
Похожие Поделиться

polatov 25.02.2009 12:24 #
+ 1 -
под кат и еще ошибка в заглавии s/ADLS/ADSL
xT 25.02.2009 12:27 #
+ 3 -
fixed
polatov 25.02.2009 13:38 #
+ 0 -
ADSL D-link D500T почему-то после выключения и включения электричества перестает работать пока не перезапустишь его из под веб-интерфейса. При чем там видно, что нету коннекта с WAN. С этим модемом я имел дело на работе. Исключительно положительные впечатления, но дома он ведет себя нехорошо.
xT 25.02.2009 14:18 #
+ 3 -
а через телнет, подобным образом, возможно перезапускать?
polatov 25.02.2009 14:41 #
+ 0 -
не знаю. даже не слышал о такой возможности. если просвятишь - буду рад.
xT 25.02.2009 15:17 #
+ 3 -
На фтп.длинк.ру лежит вот такой файлик
ftp://ftp.dlink.ru/pub/ADSL/DSL-500T/Description/TI_%20CLIV01.DOC
может тебе поможет команда reboot =)
exelens 25.02.2009 14:18 #
+ -3 -
Попробуй кабель получше положить дома, затухание наверное сильное.. у меня были дома проблемы с ADSL... Стоило проложить новый кабель как всё стало как часы.
polatov 25.02.2009 14:40 #
+ 0 -
у меня отличнейший заводской патчкорд от модема до машины. либо имеется в виду телефонный кабель?
a1fred 25.02.2009 17:55 #
+ 0 -
Я тоже такое чудо чуть не написал. Пока не понял что модем у меня подвисает, а не дисконектится;(
mvt 29.05.2010 17:55 #
+ 0 -
А я упростил эту связку, т.к. такую схему я уже пытался использовать - не прокатило. Скрипт на expect сам по себе работал, а в связке не хотел почему мне не известно.
Поэтому, решено, не без гугления заменить скрипт на expect на еще один bash/
В него была добавлена одна строчка пойманная при заходе через веб-морду: wget -q http://192.168.1.1/rebootinfo.cgi
Если ваш новый скрипт называется как-то по-другому, то измените путь к нему указанный в 47-ой строчке скрипта ping_test.
cppmm 29.05.2010 18:13 #
+ 0 -
Немного не в тему...
Я вот как-то с expect'ом ковырялся, но к своему стыду не осилил и пришлось изначально планируемую связку expect+bash полностью переписать на perl. Вот, может кто-нибудь выложит по expect'у чего-нибудь интересное? Только не на школьном уровне IBM developerWorks, а как-нибудь поглубже и подробнее?
stass 27.01.2014 23:23 #
+ 0 -
я может тоже не в тему, но почти все написанное на баше я в результате переписывал на perl )
dront78 31.01.2014 10:23 #
+ 0 -
это просто разные полушария головного мозга задействованы.
ничего страшного )
Perpetuum_Mobile 21.01.2011 16:17 #
+ 0 -
на днях наваял однострочник под такую же задачу:
curl -d "Restart=RESTART" http://LOGIN:PASSWORD@IP/Forms/tools_system_1путь к тулсине выцепил тоже курлом, скормив ему путь к странице админки модема с кнопкой для рестарта.
пока использую в ручном режиме, не настолько доверяю автоматике)
Tenyoff 24.01.2014 11:30 #
+ 0 -
Я понимаю что этот пост уже не актуален но все токи хочу на удачу задать вопрос автору.. Есть ли подобные решения на OS windows?

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн