LINUX.ORG.RU

[lua or bash]Скрипт для мониторинга интерфейса


0

1

Ищу реализацию демона(можно и скрипта{буду запускать через cron } ) для мониторинга поднят ли интерфейс?(если нет то сигнализовать и пытаться его поднять) в виду того что не хочеться делать велосипед с квадратными колесам :)

Желательно пример под lua или bash .для мониторинга доступности хватит и парсинг вывода ifconfig ppp0 и пинга до определленных узлов
Демон нужен для автоподнятия 3g и затем vpn(ipsec , vpnc) на железке работающей под Openwrt.

★★★★★

check() {
ifconfig ppp0 | grep -q UP || return 1
for ip in 10.10.10.10 192.168.0.0
do
ping -qc4 $ip >/dev/null || return 1
done
}
check || my-command-for-starting-vpn

Как-то так?

AITap ★★★★★ ()
Ответ на: комментарий от AITap

ok poprobuyu. no boyus busybox'viy ping flag -q ne derjit + eto ne demoniziruyushiysya script.
kak budu doma proveryy.
P.S izvini za translit prosto pishu cherez tel.

pinachet ★★★★★ ()
Ответ на: комментарий от dimon555

ok.no na openwrt i ppp i pppd daemon urezan.
+ v samom openwrt cherez UCI mojno stavit max redial atemtps no eto nemnogo nepravilnoe reshenie

pinachet ★★★★★ ()
Ответ на: комментарий от lazyklimm

>while true ... sleep
Костыльный спобоб - на не самом быстром железе(там 400 мгц mips)

.Лучше я через fork + setsid сделаю

pinachet ★★★★★ ()
Ответ на: комментарий от lazyklimm

нет просто память тоже юзается.
Хотя я наверное твой способ попробую.

pinachet ★★★★★ ()
Ответ на: комментарий от AITap

Покритикуй код

На основе твоего кода и с учетом openwrt ash (по сути в реалиазации busybox )

У меня почему то [[ не принимал - этот шел.
Алгоритм работы такой - перевести usb гудок в режима модема из fake cd или если переведен от пропустить это все.
Дальше проверка 3g коннекта и аналогично для vpn до cisco


check_modem()
{
   #proverka na to chto usb modem v rejime modema ustanovlen
   #a ne v rejime fake usb cdrom
   if [ ! -f /dev/ttyUSB3 ] ;
   then
      #posilaem usb_modeswitch ego v normalniy rejin
      usb_modeswitch -c /19d2\:2000 &
      sleep 20
   fi
}

check_3g()
{
ifconfig 3g-wan | grep -q UP || return 1
ping -qc4 10.1.6.1 >/dev/null || return 1
}

check_vpnc()
{
ifconfig tun0 | grep -q UP || return 1
ping -qc4 8.8.8.8 > /dev/null || return 1
}
check_modem ;
check_3g || (ifdown wan ; ifup wan);
check_vpnc || (sleep 20;vpnc-disconnect ; vpnc);

pinachet ★★★★★ ()
Ответ на: Покритикуй код от pinachet

> check_3g || (ifdown wan ; ifup wan);

check_vpnc || (sleep 20;vpnc-disconnect ; vpnc);

А если сделать скрипт более оптимистичным?
check_vpnc || ( check_3g || (ifdown wan ; ifup wan); (sleep 20;vpnc-disconnect ; vpnc); )
В смысле, если всё изначально работает, дополнительную работу по проверке наличия модема и ppp-соединения делать не стоит.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

>check_vpnc || ( check_3g || (ifdown wan ; ifup wan); (sleep 20;vpnc-disconnect ; vpnc); )

Ок.Просто vpn падает с намного более меньшей вероятностей чем 3g .
P.S Есть ли аналог книжки Modern Perl для bash?

pinachet ★★★★★ ()
Ответ на: комментарий от AITap

>Advanced Bash Scripting Guide?

Этот я знаю.Что нить подобное ему но более сильно на примеры(и с учетом добавок bash(просто на ash не все идет))

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