Я использую маршрутизатор buffalo WZR-HP-G300NH с прошивкой DD-WRT. Интернет иногда замедляется, и устройства даже не могут подключиться к WiFi. Если я перезагружаю роутер, все возвращается в норму. Это происходит несколько раз в день. Есть ли скрипт для обнаружения проблемы в роутере и автоматического перезапуска?
1 ответ
Да, ты можешь!
- Включите поддержку JFFS во внутреннем Flash-хранилище через страницу Администрирование> Управление.
- SSH к вашему роутеру и сохраните следующее в
/jffs/checkConnection.sh
.
Это урезанная версия того, что я использую, которая также посылает мне слабые сообщения, когда интернет восстанавливается. По сути, мы проверяем известный URL. Если он отвечает, Интернет работает, в противном случае он не работает. Если соединение считается разорванным, мы сохраняем текущую временную метку в файле (если мы этого еще не сделали) и перезагружаемся. Когда соединение восстановлено, мы читаем этот файл и записываем, как долго соединение было отключено. Существуют различные операторы журнала и эхо, поэтому вы получите вывод, запускаете ли вы сценарий вручную, по конвейеру или через CRON.
#!/bin/sh
PATH="/bin:/usr/bin:/sbin:/usr/sbin:/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin"
ping -c4 google.com > /dev/null
if [ $? != 0 ]; then
if [ ! -f /jffs/rebooted ]; then
echo `date '+%m/%d/%Y %I:%M %p'` > /jffs/rebooted
fi
message="Connection down, rebooting..."
logger -s -t "custom.checkConnection" "$message"
echo $message
reboot
elif [ -f /jffs/rebooted ]; then
ts=`cat /jffs/rebooted`
message="Internet restored, was down since $ts"
rm -rf /jffs/rebooted
logger -t "custom.checkConnection" "$message"
echo "$message"
else
echo "Everything looks good!"
fi
Вы можете запустить его вручную или задать задачу CRON для запуска каждые 5 минут или около того:
*/5 * * * * root /jffs/checkConnection.sh