Нетобзор - форум про интернет

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Автор Тема: Скрипт проверки состояния соединения USB модема (USB watchdog)  (Прочитано 1131 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

plastilinАвтор темы

  • Новичок
  • *
  • Благодарность: +1/-0
  • Оффлайн Оффлайн
  • Сообщений: 49
  • Город: Киев
  • Модем: НЕТ
  • Провайдер: Интертелеком
  • Тариф: Вільний день+

 Так как роутер установлен в не очень удобном месте и работает в паре с 3G модемом Novatel MC760, сделал небольшой скрипт для автоматизации перезагрузки роутера (watchdog). Принцип данного скрипта можно применить в любом роутере где установлен Linux и можно добраться до файловой системы. Для того чтобы скрипт заработал на Asus RT-N10U нужно проделать следующее:

1. Необходимо прошить роутер на альтернативную прошивку AsusWRT- Merlin ftp://82.207.89.70/pub/ASUS/ASUSWRT_MODDED/mod8/RT-N10U_3.0.0.4_378_4129-gecc8142-m8.trx
2. Подключаемся по SSH на IP роутера и создаем скрипт проверки состояния соединения с именем checkinet, сохраняем его в /jffs/scripts/ и даем права на выполнение командой chmod +x checkinet:

3. Выбрать себе сценарий который будет использоваться или создать свой.

Вариант №1. Скрипт делает элементарные вещи. Сначала пытается скачать страничку google.com, проверяя есть ли интернет и работает ли DNS, если не получается, то отправляет роутер в перезагрузку.

#!/bin/sh
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
logger "WAN is UP"
else
reboot
fi

Вариант №2. Если есть доступ к PPTP VPN серверу, который может выдать внешний IP за который Интертелеком хочет за это денег. Подходит если за роутером установлен, например, видеорегистратор. Сценарий делает тоже самое что и первый скрипт но, дополнительно, проверяет наличие на интерфейсе внешнего IP выданного VPN сервером. Если IP нет, то рестартует VPN клиента.

#!/bin/sh
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
logger "WAN is UP"
ifconfig | grep XXX.XXX.XXX.XXX
if [ $? -eq 0 ]; then
logger "VPN is UP"
else
logger "VPN is DOWN"
service restart_vpncall
fi
else
reboot
fi

Вариант №3. Отключение автоматической перезагрузки роутера при отсутствии модема в USB. Для реализации данной функции потребуется знать VID/PID модема. Узнается командой lsusb в консоли.

#!/bin/sh

modem=`lsusb | grep "XXXX:XXXX"`
if [ -n "$modem" ]; then
logger "USB modem is connected"
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
logger "WAN is UP"
else
reboot
fi
else
logger "USB modem is not connected"
fi

Вариант №3.1. Отмена презагрузки если отсутствует модем с проверкой VPN

#!/bin/sh

modem=`lsusb | grep "XXXX:XXXX"`
if [ -n "$modem" ]; then
logger "USB modem is connected"
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
logger "WAN is UP"
ifconfig | grep XXX.XXX.XXX.XXX
if [ $? -eq 0 ]; then
logger "VPN is UP"
else
logger "VPN is DOWN"
service restart_vpncall
fi
else
reboot
fi
else
logger "USB modem is not connected"
fi

4. Необходимо добавить задачу в планировщик по пути /jffs/crontab/admin Я сделал интервал 5 минут

*/5 * * * * /jffs/scripts/checkinet
« Последнее редактирование: 29 Июль 2016, 11:47:07 от plastilin »
Записан

 

+ Быстрый ответ