Archiv verlassen und diese Seite im Standarddesign anzeigen : Ping Online / Offline Status Script für Netzwerküberwachung / Monitoring
Coding-Junior
20.02.2008, 18:32
Hi,
ich habe jetzt schon ein "Ewigkeit" nach einem Shell-Script gesucht was mir bestimmte IPs in meinem LAN anpingt und dann das Ergeniss ausgibt ob diese Rechner Online oder Offline sind.
Habt ihr ein solches Script oder könnt ihr mir beim erstellen eines solchen behilflich sein?
Vielen Dank Coding-Junior.
Ähm... was spricht gegen ping? Wenn eine Antwort zurückkommt, siehst du, das der Rechner da ist. Kommt keine, ist er möglicherweise aus.
Behilflich gerne jedoch nicht vollständig für dich schreiben.
Als Ansatz würde ich dir empfehlen einen Array(die Hostlist) von IPs zu deklarieren und diesen dann mit einer for Schleife zu durchlaufen.
Dabei für jeden Eintrag einen ping mit entsprechenden Paramtern schicken, so dass nur ein PING Paket gesendet und ein Timeout von 1 Sekunde(Für LAN sollte das voll ausreichend sein) gesetzt ist. Anhand des Rückgabewerts des ping Befehls kannst du dann auswerten welche Hosts up/down sind.
mnemonic
21.02.2008, 00:20
nmap (http://nmap.org/) könnte dafür gut geeignet sein, da braucht man nichtmal ein Script zu basteln.
Wenns ein wenig mehr Monitoring sein soll, ist monit (http://www.tildeslash.com/monit/) gut zu gebrauchen.
HTH
Coding-Junior
21.02.2008, 17:34
Hi,
ich habe nichts gegen ping, ganz im Gegenteil, eventuell sogar fPing weil das angeblich schneller sein soll und mehr Möglichkeiten hat.
Wofür das ganz?
Das Script soll dann auf einem kleinen embedded Linux System laufen.
Und dort soll es in einer HTML Seite dann anzeigen welche Rechner online sind und welche nicht. So in der Art einer Landkarte wo dann neben der IP ein grüner oder roter Punkt auftaucht für online oder offline.
Ein gelber Punkt soll noch hinzukommen wenn das Gerät zwar erreichbar ist aber die Pings oft verschwinden also Fehlerhaft ankommen (für WLAN - Verbindungen usw.).
Wenn es dafür fertige Projekte gibt die nicht den Rahmen sprengen nehme ich auch gern so etwas.
nmap habe ich installiert und das hat gute Funktionen und Ausgabe.
Eventuell sollte ich dann später nmpa stat ping verwenden, aber erstmal klein anfangen und das Shell scripten hinbekommen ;-) .
Hat monit eine Gui oder sogar ein WebGui oder was genau macht das?
Als Ansatz würde ich dir empfehlen einen Array(die Hostlist) von IPs zu deklarieren und diesen dann mit einer for Schleife zu durchlaufen.
Dabei für jeden Eintrag einen ping mit entsprechenden Parametern schicken, so dass nur ein PING Paket gesendet und ein Timeout von 1 Sekunde(Für LAN sollte das voll ausreichend sein) gesetzt ist. Anhand des Rückgabewerts des ping Befehls kannst du dann auswerten welche Hosts up/down sind.
Diesen Ansatz habe ich theoretisch auch schon mir gedacht, leider fehlt es an der korrekten Umsetzung.
Dann habe ich noch ein Problemchen dazu.
Ich möchte nicht nur 1 Ping senden (der erste Ping geht gern mal verloren).
Ich möchte im Script einstellen können wie viele Pings gesendet werden sollen (Standart wollte ich erstmal 4 machen.)
Aus der Anzahl der verlorenen Paketen sollte dann entschieden werden ob der Punkt gelb oder rot und grün wird. Also bei Verlusten Gelb.
Jetzt kommt mein Problem:
Wenn ich das in einer Schleife mache mit den IPs abfragen,
dann wird für die erste IP 4 Ping durchlaufen,
dann für die zweite IP usw.
Wenn die ersten 5 alle aus sind dauert das eine ganze Ewigkeit bis ich bei IP 6 angekommen bin. Kann das irgendwie umschifft werden in dem man mehrere IPs gleichzeitig pingt? Oder bringt das Probleme?
Ein anderer Ansatz den ich mir überlegt habe ist das Zwischenspeichern der Ergebnisse.
Das Script ping die IPs der Reihen nach mit jeweils 4 Pings an.#
Schreibt die Ausgabe aber in eine Datei (z.B: status.txt) nach dem Muster
IP Verlust in Prozent für jeden IP. Das Script heißt ping.sh.
Ein weiteres Script mit dem Namen Status.sh ruft dann status.txt auf und wertet das aus für die html-Seite.
Jetzt ist die erste Frage:
Was passiert wenn die beiden Scripte zur selben Zeit auf status.txt zugreifen?
Frage:
Wie kann ich in die Datei schreiben ohne was Bestehendes zu überschreiben?
Ich hoffe ihr könnt mir etwas helfen?
Danke Junior.
#!/bin/bash
clear
nmap -sP 192.168.0.1-255 | grep "appears" | awk '{print $2}' | while read line ;do
echo "$line: is Online"
done
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.