• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Automatischer Verbindungscheck

Hallo zusammen,
ich bin gerade dabei ein Script zu entwickeln, welches eine Verbindung zu einem entfernten Netzwerk überprüfen soll.
Das Script ist wie folgt aufgebaut:

ping -c 60 192.168.121.3 > pingout
sleep 70
????if????
mail -s Verbindung prüfen mustermann@mustermann.de


Der Inhalt der Datei Pingout sind wie folgt aus:

64 bytes from 192.168.121.3: icmp_seq=1 ttl=252 time=352 ms
64 bytes from 192.168.121.3: icmp_seq=2 ttl=252 time=82.4 ms
64 bytes from 192.168.121.3: icmp_seq=3 ttl=252 time=150 ms
64 bytes from 192.168.121.3: icmp_seq=4 ttl=252 time=113 ms
64 bytes from 192.168.121.3: icmp_seq=5 ttl=252 time=62.8 ms
64 bytes from 192.168.121.3: icmp_seq=6 ttl=252 time=23.6 ms
64 bytes from 192.168.121.3: icmp_seq=7 ttl=252 time=19.8 ms
64 bytes from 192.168.121.3: icmp_seq=8 ttl=252 time=20.0 ms
64 bytes from 192.168.121.3: icmp_seq=9 ttl=252 time=21.0 ms
64 bytes from 192.168.121.3: icmp_seq=10 ttl=252 time=19.9 ms
64 bytes from 192.168.121.3: icmp_seq=11 ttl=252 time=166 ms
64 bytes from 192.168.121.3: icmp_seq=12 ttl=252 time=408 ms
64 bytes from 192.168.121.3: icmp_seq=13 ttl=252 time=450 ms
64 bytes from 192.168.121.3: icmp_seq=14 ttl=252 time=454 ms
64 bytes from 192.168.121.3: icmp_seq=15 ttl=252 time=466 ms

--- 192.168.121.3 ping statistics ---
15 packets transmitted, 15 received, 0% packet loss, time 14018ms
rtt min/avg/max/mdev = 19.860/187.523/466.997/176.463 ms

Und hier fängt mein Problem an. Die Mail soll nur versendet werden,
wenn die einzelnen Zeilen daraufhin überprüft wurden, ob ein Ping länger als
100 ms dauert. Tritt z.B. der Fall auf, dass in 20 Zeilen der Wert über 100 ms liegt,
soll eine Mail gesendet werden.

Gruß
Marathoni83
 

framp

Moderator
Teammitglied
Die letzte Zeile der Pingausgabe sieht wie folgt aus:
Code:
rtt min/avg/max/mdev = 0.247/0.249/0.253/0.018 ms
Benutze doch einfach den avg Wert (0.249 im Beispiel) bei 60 pings und Vergleiche den gegen 100 ms. Wenn größer -> eMail ansonsten - gut ist.
 
OP
M

Marathoni83

Newbie
Danke für die schnelle Antwort.
Das Problem welches ich habe, wie kann ich dieses in einer IF-Anweisung darstellen.

Gruß
Marathoni83
 

framp

Moderator
Teammitglied
Untested codesnippet:

Code:
while [ 1 ]; do
 avg=`ping -c 60 http://www.suse.de |tail -n 1|cut -d / -f 5`
 if [ $avg -gt 100 ]; then
    # send eMail
 fi
done
 
A

Anonymous

Gast
framp schrieb:
Untested codesnippet:
ping ... http://...... == ERROR: ping: unknown host http://......
Also keinen Port anpingen sondern einen Rechner.

avg=`ping -c 60 RECHNER |tail -n 1|cut -d / -f 5` gibt "echo "$avg" = Zahl.Dezimal
test Zahl.Dezimal -gt ZAHL = ERROR: bash: [: Zahl.Dezimal: integer expression expected
also sollte man vorher noch den Punkt oder Komma (je nach Systemeinstellungen) und die Dezimalstellen wegschneiden.
Bash arbeitet nicht direkt mit Nichtinteger Zahlen.

Was passiert eigentlich im Fehlerfall von ping. Hier scheinbar im Moment aber meistens lange Zeit erst mal gar nichts.

Der Mailbefehl ist bisher auch nur eine Atrappe.

ich würde da aber noch mindestens eine gehöriges sleep dazubauen, sonst kannst du dich im Netzwerkproblemfall
auf mehr Mails freuen als du löschen kannst. Voraussetzung ist natürlich das die Mail dann trotz Neztprobleme auch zugestellt werden können ;) Wahrscheinlich muss hier auch mehr Logig dazugebaut werden, je nach Einsatzfall.

framp s Ansatz ist schonmal gut, aber noch etwas verbesserungsbedürftig, ist also so noch nicht einsetzbar

robi
 

framp

Moderator
Teammitglied
robi schrieb:
framp s Ansatz ist schonmal gut, aber noch etwas verbesserungsbedürftig, ist also so noch nicht einsetzbar
Jup. Aber Marathoni83 soll ja auch noch was zu tun haben :roll:
Code:
avg=`ping -c 60 www.suse.de |tail -n 1|cut -d / -f 5 | perl -n -e '/(\d+)/; print "$1"'`
sollte dann tun :D
 
OP
M

Marathoni83

Newbie
Hi,
eben, ihr könnt mir auch ein bisschen Arbeit lassen. Ihr habt mir ein großes Stück weitergeholfen.

Gruß
Marathoni 83
 
Oben