pi-cubiq
20-04-2004, 18:33
hi folks,
ich sitze gerade vor dem auftrag, ein simples bash-überwachungsscript zu schreiben, was das folgende tut: es überwacht den DSL access-concentrator, falls er nicht erreichbar ist, soll die kiste beepen, falls erreichbar in 5 min noch einmal checken. hier ist mein script-versuch:
#!/bin/sh
iface=eth1
timeout=3
checkmac()
{
req_mac=`/usr/sbin/pppoe -I $iface -A -T $timeout | grep '\([[:xdigit:]]\{2\}:\)\{5\}[[:xdigit:]]\{2\}' | cut -b 22-`
echo "$req_mac" | grep '^\([[:xdigit:]]\{2\}:\)\{5\}[[:xdigit:]]\{2\}$' > /dev/null
if #grep hat eine MAC gefunden
then
sleep 300
checkmac
else
beeper
sleep 30
checkmac
fi
}
beeper()
{
while $i
do
echo -en "\033[10;500]\033[11;200]\007" > /dev/tty0
sleep 0.5
done
}
ich mache also folgendes: ich schneide das output von `pppoe -A` so zurecht, dass nur die mac-adresse in einer zeile vorhanden ist (req_mac). wenn dann der grep die mac zurueck gibt, ist der AC-link vorhanden, sonst nicht.
hier ist das output von `pppoe -A`:
Access-Concentrator: MUNX13-erx
Got a cookie: e6 6d 46 7a 3d ee 77 62 9a f1 a5 1c f5 1c e0 ba
AC-Ethernet-Address: 00:90:1a:10:22:28
--------------------------------------------------
da `pppoe -A` nicht terminiert habe ich noch einen timeout-befehl oben im script (-T timeout) hinzugefügt (oder wie kann man sonst einen nicht terminierenden prozess "greppen"?).
da ich mit bash-scripting nicht so viel am hut habe, kann es gut sein, dass die lösung extrem umständlich ist. solange sie aber funktioniert, wäre ich froh, kann mir jemand einen tip geben, wie ich das script fertig schreibe? ich habe momentan nur pseudo-code bei der if-abfrage stehen...
vielen dank für eure hilfe!
ich sitze gerade vor dem auftrag, ein simples bash-überwachungsscript zu schreiben, was das folgende tut: es überwacht den DSL access-concentrator, falls er nicht erreichbar ist, soll die kiste beepen, falls erreichbar in 5 min noch einmal checken. hier ist mein script-versuch:
#!/bin/sh
iface=eth1
timeout=3
checkmac()
{
req_mac=`/usr/sbin/pppoe -I $iface -A -T $timeout | grep '\([[:xdigit:]]\{2\}:\)\{5\}[[:xdigit:]]\{2\}' | cut -b 22-`
echo "$req_mac" | grep '^\([[:xdigit:]]\{2\}:\)\{5\}[[:xdigit:]]\{2\}$' > /dev/null
if #grep hat eine MAC gefunden
then
sleep 300
checkmac
else
beeper
sleep 30
checkmac
fi
}
beeper()
{
while $i
do
echo -en "\033[10;500]\033[11;200]\007" > /dev/tty0
sleep 0.5
done
}
ich mache also folgendes: ich schneide das output von `pppoe -A` so zurecht, dass nur die mac-adresse in einer zeile vorhanden ist (req_mac). wenn dann der grep die mac zurueck gibt, ist der AC-link vorhanden, sonst nicht.
hier ist das output von `pppoe -A`:
Access-Concentrator: MUNX13-erx
Got a cookie: e6 6d 46 7a 3d ee 77 62 9a f1 a5 1c f5 1c e0 ba
AC-Ethernet-Address: 00:90:1a:10:22:28
--------------------------------------------------
da `pppoe -A` nicht terminiert habe ich noch einen timeout-befehl oben im script (-T timeout) hinzugefügt (oder wie kann man sonst einen nicht terminierenden prozess "greppen"?).
da ich mit bash-scripting nicht so viel am hut habe, kann es gut sein, dass die lösung extrem umständlich ist. solange sie aber funktioniert, wäre ich froh, kann mir jemand einen tip geben, wie ich das script fertig schreibe? ich habe momentan nur pseudo-code bei der if-abfrage stehen...
vielen dank für eure hilfe!