Status-abfrage über ping

DeathDealer

Enthusiast
Thread Starter
Mitglied seit
10.08.2006
Beiträge
261
Ort
CH
Ich wollte mir am Wochenende ein PHP-skript schreiben, das im Ampelsystem auf einer Website anzeigen soll, welche Clients und Server gerade online sind und welche nicht. Das wollte ich ursprünglich über ping machen, durch etwas Recherche bin ich aber auf fsockopen (http://php.net/manual/en/function.fsockopen.php) gestossen. Beim weiteren googlen bin ich noch auf den Hinweis mit ICMP gestossen, das ohne Ports funktioniert und daher besser geeignet sei (da ja ein Client nicht unbedingt offene Ports zb 80 haben muss).
Nun halts etwas am weiteren Vorgehen. Wie kann ich das so implementieren? Meine PHP-Kenntnisse sind nicht überragend, will es aber dennoch versuchen. Ich suche eigentlich nicht nach einer fertigen Lösung da das ganze sonst seinen Zweck verliert.;)

Kann da wer vielleicht weiterhelfen?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Eine zuverlässige Aussage, ob ein Client oder Server gerade online ist bekommst du auf diesem Wege allerdings nur bedingt. Du müsstest sicherstellen, dass eine lokale Firewall die Anfrage nicht blockiert (die Windows Firewall blockt z.B. standardmäßig ICMP Requests) und dass ein vorhandenes Netzwerkinterface immer erreichbar ist (im Standbye bzw. Energiesparmodus schaltet Windows auch gerne das Netzwerkinterface ab).

Ob man zum gewünschten Zweck etwas neu programmieren muss oder lieber eine bestehende Software nutzt ist ebenso fraglich.
Wirf doch mal einen Blick auf frei verfügbare Netzwerkmonitoring Systeme wie z.B. Nagios, Zabbix oder Monit.
 
Ein Monitoringsystem ist etwas overskilled. Ich will ja nur einen kleinen Bestandteil davon nutzen. Vielleicht kann ja sonst noch wer was dazu sagen.
Klar, wenn sonst nix geht, versuch ichs mit Nagios.
 
Also es gibt gefühlt 1000 Möglichkeiten das zu realisieren. Und du wirst genug "fertige" ansätze finden, da das ganze eig. relativ simpel ist :d

Auf was für einem System soll das Script laufen ? Windows ? Linux ? Was ist auf dem System vorhanden ? PHP ? MySQL oder andere Datenbank (oder auch ODBC) ?
Was willst du überhaupt überwachen ? Nur "Server überhaupt erreichbar" oder auch "Dienst (z.B. Webservice / Apache) erreichbar" ?

Nur mal so 2 Ideen:
- PHP live Ping: Google (pingt dann halt nur, wenn dein Script aufgerufen wird). Aus dem Ergebnis dann halt deine Ampel als Bild basteln.
- Google und Google - shell ping und ergebnis dann in datenbank (beispielhaft mysql) eintragen, die dann mit php entsprechend auswerten (aus aktuellstem Wert Ampel basteln)

Die Ampel dann als Bild mit PHP ausgeben (https://www.google.de/#hl=de&sclien...pw.r_qf.&fp=273aa0d90065244e&biw=1280&bih=885) und das Bild dann in eine HTML einbetten und evtl. per JavaScript jede Minute oder so aktualisieren lassen

Wie du schon gesagt hast: ICMP geht bei den meisten Systemen (außer natürlich durch Firewall geblockt bzw. deaktiviert), da es in der OSI-Schicht 3 und damit unterhalb von TCP arbeitet (-> braucht also keine offenen Ports).
Nachteil: was nützt es dir, wenn der Server erreichbar ist, aber dein Dienst (z.B. Apache) den Geist aufgegeben hat und du keine Meldung kriegst ? Also alles eine Frage der Anforderung.
 
Zuletzt bearbeitet:
Das Script soll vorerst mal auf meinem NAS (Synology) laufen. Das hat natürlich ein Linux-Unterbau mit PHP und MySQL.

Die Verfügbarkeit von Webservices/Server hab ich schon mit fsockopen hingekriegt. Jetzt fehlt mir noch die Überwachung der Clients, die natürlich keine Services bereitstellen, daher die Frage nach ICMP. Genau genommen, will ich z.B. auf der Seite sehen, ob meine Gamekiste an ist, weil ich sie beispielsweise vergessen habe auszumachen. Oder wenn ich den WOL-Command vom Smartphone aus schicke und mit RDP nicht auf die Kiste komm, will ich so überprüfen, ob die sie überhaupt an ist etc.

Und ganz nebenbei ists ne nette Spielerei. ;)

Danke für die Links, werd mir die morgen mal anschauen. :)
 
Statt große Monitoringsysteme aufzusetzen könntest du auch via SNMP gucken, ob der Client da ist. SNMP taugt natürlich auch noch zu mehr.
 
Kannst du das etwas erläutern, eventuell mit einer kleinen Starthilfe?
Der PHP.net-Eintrag ist etwas umfangreich. Speziell mit meinem Wissen...
 
PHP: SNMP::get - Manual
Da ist doch ein Beispiel dabei ?

SNMP ist aber z.B. unter Win7 standardmäßig aus. Um Cients zu überwachen also eher unbrauchbar, da du bei jeden Client erst den Dienst installieren/aktivieren musst und zudem wieder einen offenen Port brauchst.
Im Bereich von Serverüberwachung ist SNMP sehr nützlich, aber für eine einfache "über Netzwerk erreichbar"-Abfrage m.M.n. oversized.
 
Wollte nur noch kurz Feedback geben.
Habs mittlerweile doch mit fsockopen gelöst, da ich die Ports für RDP anpingen kann. Ist zwar nicht sehr schick, funktioniert aber einwandfrei. ;)
Danke für die Tipps!:)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh