Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

PHP: Ping mit Online/Offline Ausgabe

Hallo zusammen,
ich will mir ein kleines PHP Script in mein Intranet einbauen, mit dem ich alle PC's im Netzwerk starten und herunterfahren kann. Dies funktioniert auch soweit. Allerdings will ich noch eine kleinigkeit hinzufügen, nämlich ob der PC gerade Online oder Offline ist. Habe mir gedacht das lässt sich mit einem Ping realisieren. (sollte ja eigentlich auch möglich sein).
habe es mit folgendem Script versucht:
<?php

$iparray=array("Fritzbox:192.168.2.1");

function ping($PC,$ip)
{
  $cmd=shell_exec("ping -c 1 -t 2 $ip");
  $checker=explode(",",$cmd);
  if (eregi("0", $checker[1], $out))
  {
      $connectionstatus="<img src=\"off.gif\">";
      $text="ist offline";
  }
  if (eregi("unknown", $checker[0], $out))
  {
      $connectionstatus="<img src=\"err.gif\">";
      $text="ist unbekannt / hat einen unbekannten Status";
  }
  if (eregi("1", $checker[1], $out))
  {
      $connectionstatus="<img src=\"on.gif\">";
      $text="ist online";
  }
  $output="$connectionstatus [$ip] <b>$PC $text.</b><br><br>";
  return $output;
}
while(list($k,$v)=each($iparray))
{
 $pcip=explode(":",$v);
 $output=ping($pcip[0],$pcip[1]);
 echo $output;
}
?>
Dieses verursacht aber nur folgende Ausgabe:
Deprecated: Function eregi() is deprecated in C:\xampp\htdocs\ping.php on line 9

Deprecated: Function eregi() is deprecated in C:\xampp\htdocs\ping.php on line 14

Deprecated: Function eregi() is deprecated in C:\xampp\htdocs\ping.php on line 19

Notice: Undefined variable: connectionstatus in C:\xampp\htdocs\ping.php on line 24

Notice: Undefined variable: text in C:\xampp\htdocs\ping.php on line 24
[192.168.2.1] Fritzbox .

also nicht das gewünschte Ergebnis.
für die IP habe ich ein array angelegt, da ja später noch weitere PC's dazu kommen sollen. zum Testen habe ich erstmal meine Fritzbox benutzt.
Was mache ich falsch? Gibt es andere möglichkeiten mein Problem zu lösen?
Danke schonmal im vorraus
Philipp H.
(bitte nicht allzu komplizierte Antworten, habe auch erst vor 3 monaten mit PHP proggen begonnen.)


Antworten zu PHP: Ping mit Online/Offline Ausgabe:

Zitat
Was mache ich falsch?
einfach ein Script aus dem I-Net kopieren, ohne dass Du es verstehst.  ;D

das hier:  Function eregi() is deprecated  sagt aus, dass die Funktion eregi() veraltet ist
-> Dein Freund heißt  preg_match()
http://php.net/manual/de/function.preg-match.php

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, das mit dem I-Net stimmt ;-), da ich mich wie gesagt noch nicht sogut auskenne.
Aber mit preg_match() funztz auch nicht, diesmal sagt er: Warning: preg_match(): Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\ping.php on line
Philipp H.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Habs jetzt selber mit einem selbst geschriebenem Script hinbekommen, dauer allerdings ewig zum laden, da er das folgende Script für 12 PC's durchführt. Kann man dagegen noch etwas tun?
Script:
<?php
  $host = "192.168.2.101";
 $ping = shell_exec("ping $host");
$splitping = str_split($ping);
$pos = strpos($ping, "Empfangen");
$pos = $pos + 12;
$recived = $splitping[$pos];
if($recived == 4){
   $onoff = "Online";
} else {
   $onoff = "Offline";
}
if($onoff == "Online") {
    echo'<img src="tick.png" />';
} else {
    echo'<img src="cross.png" />';
}
?>
Die Bilder cross und tick sind meine Symbole zum Anzeigen des Betriebszustands.
Philipp H.

klar, dass er dazu ne Weile braucht, Du führst das Script momentan unter Windows aus, da werden default 4 Pings gesendet, (unter Linux würde er fröhlich weitersenden, mal als Info nebenbei, falls Du das Script mal woanders einsetzen willst).

Entweder die Anzahl mit -c begrenzen oder gleich statt externem Aufruf von "Ping" fsockopen() benutzen, (so würde ich das machen) da mußt aber nen Port mit angeben.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,
Danke für den Hinweis. Ich bin wie gesagt noch nicht lange auf dem gebiet PHP unterwegs und kann daher mit fsockopen() nicht viel anfangen. Da ich jetzt festgestellt habe dass mein Script nicht immer 100% funktioniert, meine Frage: wie könnte ein Script mit fsockopen() aussehen?
Danke schonmal für antworten.
Philipp H.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,

ich habe bei mir zu Hause auch ein kleines Script geschrieben, welches prüft ob meine Server online sind. Dafür habe ich einfach auf jedem Server eine Datei mit dem Inhalt "OK" angelegt und mein PHP-Script ruft nun auf jedem Server dieses Script mittels file_get_contents() auf und nur wenn dieses "OK" zrückgibt, ist der Server online.

Das lässt sich übrigens noch beliebig erweitern, indem man für die Datei eine PHP-Datei nimmt, diese z.B. den MySQL-Server und/oder den Mailserver prüfen lässt und bei einem Fehler eine Fehlermeldung statt "OK" ausgibt.

Edith sagt:
Wenn du eine PHP-Funktion nicht kennst, geh auf www.php.net und gib den Namen der Funktion oben in die Suchmaske ein. Da wird fast alles mit Beispielen und in verschiedenen Sprachen erklärt.

« Letzte Änderung: 23.02.13, 21:00:24 von MBGucky »

« Kostenlose Landing Page erstellen?NetObjectsFusion 10.0 Publizierung nicht möglich »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

AppleScript
AppleScript ist eine Programmiersprache von Apple für Skripte und Programme auf Systemebene. Im Gegensatz zu den Unix-Shellscripts, die seit OS X ebenfalls mögl...

Javascript
Javascript ist eine von Netscape entwickelte Skriptsprache für den Einsatz für DOM-Scripting auf Webseiten. Nahezu alle Browser- und Webseiten-Elemente lassen s...