Website um PC's anzupingen & Status anzeigen

07/10/2019 11:26 Isamani#1
Heyo,

Ich möchte eine Website entwickeln welche mehrere PC's anpingt und deren Status bestimmt, ob sie Online sind oder nicht.
Ebenfalls sollte man neue PC's über die Website hinzufügen können.

Welche Programmiersprache wäre die geeignetste hierfür?
Wie kann ich einen Ping befehl auslesen, sodass der Wert den Status auf Online/Offline setzt?
Wie soll die Funktion aussehen einen neuen PC hinzuzufügen, meine Idee wäre nur über die MAC-Adresse

LG :)
07/10/2019 12:33 florian0#2
Ich hoffe du bist dir über die Topologie des Internets im Klaren, ansonsten wird dieses Projekt eine ziemliche Enttäuschung für dich.

Für [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] brauchst du raw sockets. [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], ... gibt viele die das können. Alternativ kannst du auch einfach das ping-programm vom Betriebssystem ausführen (siehe z.B. PHP [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...]). Dann musst du dich nicht um Netzwerkkram kümmern.
Wenn du den PC anhand der MAC hinzufügen willst, brauchst du ARP. Ansonsten kommst du nicht an die IP.

Mein Tipp: Führ erstmal den Ping Befehl aus und werte die Ausgabe aus.
Geheimtipp: ExitCode / ErrorLevel


07/10/2019 13:52 Isamani#3
Quote:
Originally Posted by florian0 View Post
Ich hoffe du bist dir über die Topologie des Internets im Klaren, ansonsten wird dieses Projekt eine ziemliche Enttäuschung für dich.

Für [Only registered and activated users can see links. Click Here To Register...] und [Only registered and activated users can see links. Click Here To Register...] brauchst du raw sockets. [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], ... gibt viele die das können. Alternativ kannst du auch einfach das ping-programm vom Betriebssystem ausführen (siehe z.B. PHP [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...], [Only registered and activated users can see links. Click Here To Register...]). Dann musst du dich nicht um Netzwerkkram kümmern.
Wenn du den PC anhand der MAC hinzufügen willst, brauchst du ARP. Ansonsten kommst du nicht an die IP.

Mein Tipp: Führ erstmal den Ping Befehl aus und werte die Ausgabe aus.
Geheimtipp: ExitCode / ErrorLevel


Ich selber kenne nur die Basics von HTML/C++/C#/Java.. Wurde von meiner Ausbildungsstelle gefragt ob das möglich wäre für unser Intranet.

Ich dachte mir das es gut realisierbar wäre mit einem Backend das die PC's anpingt und ein HTML Frontend das es anzeigt.

Geht es hier nicht größtenteils nur um den Rückgabewert des Pings den ich auslesen muss und mit einer If/else die den Status auf Grün/Rot setzt?

PC anhand von MAC muss nicht sein wenn es noch eine andere Möglichkeit gibt...

Die PC's die angepingt werden laufen auf Linux alle
07/10/2019 16:17 florian0#4
Quote:
Originally Posted by Isamani View Post
Ich dachte mir das es gut realisierbar wäre mit einem Backend das die PC's anpingt und ein HTML Frontend das es anzeigt.

Geht es hier nicht größtenteils nur um den Rückgabewert des Pings den ich auslesen muss und mit einer If/else die den Status auf Grün/Rot setzt?
Front und Backend trennen ist auf jeden Fall eine gute Idee. Jenachdem wie viele Hosts du hast dauert das natürlich zu laden.

Und ja, im Endeffekt gehts nur um das Auswerten des Pings. Im Hintergrund noch irgendwas Datenbankähnliches und dann nen Cronjob der zyklisch IPs anpingt.

Das Problem mit den MAC-Addressen ist halt, das diese an Routern "verloren" gehen. Sobald ein Router dazwischen ist, siehst du die MAC-Adresse des PCs nicht mehr und hast auch keine (wenig) Chancen damit noch was sinnvolles anzufangen. Eine MAC kann man auch nicht wirklich pingen. Zumindest gibts kein Tool dafür. Mit arp -a kommst du an die ARP-Table, da müssen aber nicht zwingend alle MACs drinstehen.

Theoretisch könntet ihr auch ein Monitoringtool wie Nagios oder Zabbix einsetzen. Das macht genau das was du entwickeln möchtest (und noch viel mehr). Wenns nur um Ping geht ists natürlich overkill. Aber wenn ihr plant evtl. noch andere Sachen zu monitoren wäre das mal einen Gedanken wert.
07/10/2019 16:51 Isamani#5
Quote:
Originally Posted by florian0 View Post
Front und Backend trennen ist auf jeden Fall eine gute Idee. Jenachdem wie viele Hosts du hast dauert das natürlich zu laden.

Und ja, im Endeffekt gehts nur um das Auswerten des Pings. Im Hintergrund noch irgendwas Datenbankähnliches und dann nen Cronjob der zyklisch IPs anpingt.

Das Problem mit den MAC-Addressen ist halt, das diese an Routern "verloren" gehen. Sobald ein Router dazwischen ist, siehst du die MAC-Adresse des PCs nicht mehr und hast auch keine (wenig) Chancen damit noch was sinnvolles anzufangen. Eine MAC kann man auch nicht wirklich pingen. Zumindest gibts kein Tool dafür. Mit arp -a kommst du an die ARP-Table, da müssen aber nicht zwingend alle MACs drinstehen.

Theoretisch könntet ihr auch ein Monitoringtool wie Nagios oder Zabbix einsetzen. Das macht genau das was du entwickeln möchtest (und noch viel mehr). Wenns nur um Ping geht ists natürlich overkill. Aber wenn ihr plant evtl. noch andere Sachen zu monitoren wäre das mal einen Gedanken wert.
Ich hab jetzt mal ganz billig ne .bat geschrieben welche die Rechner(Haben feste namen im System) anpingt und in eine .log datei schreibt.
Eine Website welche per Button das Script ausführt und die werte aus der Log datei grafisch darstellt wäre jetzt meine Idee dazu
07/11/2019 10:04 florian0#6
Quote:
Originally Posted by Isamani View Post
Ich hab jetzt mal ganz billig ne .bat geschrieben welche die Rechner(Haben feste namen im System) anpingt und in eine .log datei schreibt.
Eine Website welche per Button das Script ausführt und die werte aus der Log datei grafisch darstellt wäre jetzt meine Idee dazu
Theoretisch kannst du die bat datei auch einfach zyklisch ausführen und damit die Webseite generieren. Am Besten in ne temporäre Datei und sobald es fertig ist die "live"-Datei austauschen.

Keine Ahnung wie viel Interaktion ihr wollt. Für nen einfachen Online/Offline anzeiger reichts.
07/11/2019 12:36 iMostLiked#7
Alternativ kannst du dir natürlich schnell [Only registered and activated users can see links. Click Here To Register...] aufsetzen und die Werte dann im Frontend mit einer AJAX-Request über ein PHP-Script abfragen.

Die .bat-Datei einfach in einen Cronjob rein für das zyklische Ausführen.
07/11/2019 15:57 Isamani#8
Ich hab jetzt die Website fertig vom design her fertig gebaut..

Jetzt fehlt nur noch das beim Websiten aufruf ein script ausgeführt und das logfile eingelesen wird, was die Tabelle dynamisch erzeugen soll.
Wie soll ich das am besten anstellen?
07/11/2019 16:16 False#9
Ich würde mir da keine unnötige Arbeit machen (parsen, cronjob und co), einfach eine vorhandene Lib nehmen z.B. [Only registered and activated users can see links. Click Here To Register...]

Dann kannst du beim aufrufen deiner Seite leicht ein ping an die Hosts senden z.B.
PHP Code:
$ping = new Ping("DEINE IP");
$latency $ping->ping(); 
Wenn das ganze aktuell sein soll, sprich sich aktualisieren soll verfrachtest du das ganze in ein Script und dieses Script rufst du alle X Sekunden/Minuten via Ajax auf.