Если у вас есть роутер ASUS или другой с прошивкой от Олега, то эта записка для вас. Недавно у меня возникла трудность, которую никак не получалось решить. VPN-сессия зависала, при этом VPN-соединение оставалось подключено. Роутер не мог понять, что надо переподключится. Приходилось каждый раз вручную делать перезагрузку роутера, согласитесь, это долгий и утомительный процесс.
Я покопался в интернете, оказалось я такой не один и проблема довольно масштабна среди “роутороводов”. Наши провайдеры не особо жалуют пользователей с роутерами, в большинстве случаев после ответа на вопрос “какая у вас операционная система” суппорт умолкает.
Я не задавался и продолжал искать, но нигде не было универсального решения данной проблемы. Тогда я подумал, мой роутер основан на Unix и поддерживает Bash-скрипты. Я решил написать “умный” скрипт перезагрузки, в случае повисания VPN-сессии. После нескольких проб и ошибок я остановился на таком варианте.
#!bin/sh
PINGRESORCE1="ya.ru"
PINGRESORCE2="google.com"
if (! ping -c 3 &{PINGRESORCE1} >/dev/nill 2>&1).
then
if (! ping -c 3 &{PINGRESORCE2} >/dev/nill 2>&1).
then
reboot
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
Алгоритм работы данного скрипта такой: Сначала мы посылаем 3 ping’a до Яндекса, если они проходят то выводим “internet ok”. Если нет, то посылаем ещё 3 ping’a до Гугла, если проходят, выводи “internet ok”. Если ping не дойдёт и до Гугла, то перезагрузка.
Этот скрипт необходимо добавить в планировщик задач (в большинстве случаев это cron), чтобы он выполнялся каждые 5-10 минут.
Качественные cайты на скриптах.
Старые комментарии:
Игорь 31.10.2010 18:37
Интересно, а как засунуть этот скрипт в роутер? :-?
Илья 31.10.2010 19:12
У меня DIR-320 с прошивкой от Олега.
По сути это уже полнофункционал ьный линукс, ;-) есть доступ к командной строке по SSH.
Советую посетить этот форум. (Ахтунг, там есть проблема с кодировкой нужно поставить Кириллицу Windows-1254)
http://wl500g.info/forumdisplay.php?f=86
Игорь 01.11.2010 13:48
Спасибо, получается, что роутер D-Link превращается в ASUS :eek:
Илья 01.11.2010 14:42
Ну.. Да :yehh2:
demeister 13.04.2011 04:26
скажите а на DD-WRT при прописании скрипта в cron он будет работать?
Илья 13.04.2011 15:15
Да должен, ибо тоже Linux :yehh2:
DarkShaman 21.05.2013 19:30
У меня на OpenWRT заработало так
#!/bin/sh
echo --------------- --------------- --------------- --
echo WAN CONTROLL RESTART
echo --------------- --------------- --------------- --
PINGRESORCE1="109.126.0.67"
PINGRESORCE2="109.126.1.67"
PINGRESORCE3="google.com"
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE3} > /dev/null 2>&1)
then
reboot
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
Паша 11.04.2014 21:35
У меня на OpenWRT. Не могу запустить скрипт. Объясните подробно в какую папку на роутере нужно скопировать файл скрипта, как создать этот файл и что нужно прописать в планировщике?
На данный момент создал файл /overlay/home/ping/ping.sh
в котором прописал все что в сообщении от #7 DarkShaman
Не работает. Где ошибка? Роутер не перезагружается при отключении сетевого кабеля ни сразу ни через 5 минут.
DarkShaman, подскажи как ты все проделал?
Олег 07.09.2014 17:27
Доброго времени суток! Скажите пожалуйста, а можно таким способом перезагружать другую точку, коротая подключена к моей мостом?
Бесплатная консультация по телефону: