PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einen Server anpingen, ob er on ist?!


Jupp
21.03.2002, 17:31:44
Hi zusammen,

kennt jemand von euch einen Weg, einen Server über seine IP anzupingen und damit auszuwerten, ob er on ist, oder nicht (Paket übermittelt oder TimeOut)?

Viiielen Dank im voraus!

Jupp

bombel
29.03.2002, 12:56:20
Ich würde lieber versuchen, dort ein ständig vorhandenes File zum Lesen zu öffnen. Einen klassischen Ping gibt's glaub nicht.


Diese Methode wird von ein paar Servern nicht erlaubt, aber ist ansonsten praktisch:
<?

/* Oeffne Datei zum Lesen */
$fp=@fopen("http://www.yourdomain.com/robots.txt","r");

/* Hole 2 Zeichen */
$test=@fgets($fp,2);

/* Pruefe Ergebnis */
if (isset($test)) {echo "ok";} else {echo "not ok";}

@fclose($fp);
?>

Die @-Zeichen sind dazu da, Fehlermeldungen zu unterdrücken, sollte der Server welche ausgeben. Ist in diesem Fall sinnvoll, weil wir ja Fehler erwarten.

Damir
13.08.2003, 09:51:55
Hi,
einen Server mit PHP anzupingen wird nicht gehen.

Du kannst aber einen anderen Weg gehen und eine Socket-Verbindung aufbauen.


/**
* @var string $host - Hier gehoert der Host rein
* @var integer $time - Zeit in Sekunden (z.B. 3) - Nach 3 Sekunden bricht er ab
*/
$fp = fsockopen($host,80,&$errno, &$errstr,$time);
if (!$fp){
// Fehler - Server nicht erreichbar
}
fclose($fp);


Bye Damir

chris17
13.08.2003, 17:29:42
Hi Jupp,

schau Dir mal den Thread an http://www.selfphp.info/forum/showthread.php?s=&threadid=5075&pagenumber=3

Wenn Du Windows benutzt, hier mal ein Ansatz:

<?php
$ip = "192.168.1.13"; // Deine zu pingende IP
$online = shell_exec("ping $ip");


if (ereg("Verloren = 4",$online))
{
echo 'Server offline!';
}
else
{
echo 'Server online!';
}
?>



Wenn nicht, dann musst Du den Ping-Befehl anpassen, und natürlich die Auswertung der Rückgabe...

Gruss

chris17

Martin Scheiben
17.08.2003, 13:17:34
Original geschrieben von Jupp
Hi zusammen,

kennt jemand von euch einen Weg, einen Server über seine IP anzupingen und damit auszuwerten, ob er on ist, oder nicht (Paket übermittelt oder TimeOut)?

Viiielen Dank im voraus!

Jupp

Beispiele für einen Online/Offline-Check wurden ja schon gepostet. Aber unter http://www.sourcecraft.org/downloads/ gibt es ein Script mit ping, traceroute, und nslookup.
Schaus Dir mal an. Damit hast Du ein paar weitere Möglichkeiten offen

Gruss
Martin

Progman
17.08.2003, 13:34:46
Man kann auch PEAR::Net_Ping [1] benutzen, ist aber sehr verbuggt die Klasse [2]. Dann kann man folgendes benutzen

<?php
require 'Net/Ping.php';

$ip = '127.0.0.1';
$ping = Net_Ping::factory();
if(PEAR::isError($ping)) {
echo $ping->getMessage();
} else {
$ping->setArgs(array('count' => 1));
var_dump($ping->ping($ip));
// oder
var_dump($ping->checkhost($ip));
}
?>

[1]: http://pear.php.net/manual/en/package.networking.net-ping.php
[2]: http://bugs.php.net/bug.php?id=24826