IP anpingen

Sebastian Wramba

Erfahrenes Mitglied
also wenn ich in der DOS-Eingabeaufforderung ping 123.123.123.1 eingebe, kommt ja eine bestimmte Antwort (oder auch nicht :-) ).
Meine Frag nun: Wie kann ich in PHP eine IP anpingen? Sodass ich rausfinden kann ob derjenige online ist oder nicht...

mfg gouraud
 
ich hab früher auch schon mal lange nach soetwas gesucht.
es scheint, als gäbe es das nicht.
und es passt auch gar nicht in die vorgesehene Nutzung von php.
aber wenn jemand weiß wie, ich warte. =)
 
also da ich nen localhost-server pingen wollte hab ichs jetzt so gelöst:
PHP:
<?
$ip = file("ip.txt");
$site = "http://".$ip."/";
$fp = @fopen("$site","r");
if ($fp) 
{
fclose($fp);
echo "<a href=\"".$site."\" target=\"_blank\">online</a>";
}
else { 
echo "offline";
}
 
ich hab da noch ne loesung

PHP:
<? echo "<font face=\"Verdana\" size=\"2\">";
$sock = fsockopen('hier die ip eintragen', 21, &$errno, &$errstr, 5); if(!is_resource($sock)) { echo "<font color=\"#FF0000\" size=\"1\">offline</font>"; } else { echo "<font color=\"#00BF00\" size=\"1\">online</font>"; }
?>


cya

wolf
 
Na ja, die Möglichkeiten von Wolf of Doom funktioniert allerdings nur, wenn ein Prozess auf dem Zielrechner einen Listen-Socket auf Port 21 offen hat. Das ist halt meistens ein Webserver, muss es aber nicht sein.

Die Methode von gouraund erfordert sogar explizit einen funktionsfähigen Webserver an Port 21.

Einen echten Packet Internet Groper kann man nur mit PHP wohl nicht realisieren, da dazu ein ICMP (Internet Control Message Protocol) ECHO Request an den Zielrechner gesendet werden müsste. Und dieser steht im Header eines IP-Pakets. Auf die IP-Ebene kommt man aber leider mit keinem mir bekannten PHP-Befehl herunter. Ergo kein echter PING mit PHP. Bleiben eben nur die genannten Ausweichsmöglichkeiten.


reima
 
Hi,

also ich habe sowas auch einmal geproggt. Dieses Skript läuft aber nur auf Windows Servern, bei Linux musst Du den befehl etwas modifizieren.

<!-- Hier wird der Ping zum online/offline Test ausgeführt -->

<html>
<body>

<font face=Arial color=black size=4><b>Rechner online/offline ?</b></font><br><br>
<table width=90% border=0>
<tr>
<th width="45%" bgcolor=#e90055><font face=Arial color=white size=2>Pinganweisung</font><th>

<th width="45%" bgcolor=#ffffff>
<font face=Arial color=black size=2>
<br>
<form action="ping.php" method="get">
<br>

<input type="text" name="ip" value="<? echo $ip; ?>">
<Input type="Submit" name="send" value="Ping senden">
</form>
</font>
<th>
</tr>
<tr>
<th width="45%" bgcolor=#e90055>
<font face=Arial color=white size=2>Systemmeldung</font><br>
<th>
<th width="45%">
<font face=Arial color=black size=1>

<?


if($ip)
{
//Pingbefehl
$eingabetext = system ("ping $ip -n 1");
$suchtext = "Timeout";

//Hier wird nach dem Suchtext gesucht. Ist kein Rechner da kommt die Fehlermeldung mit Timeout, danach wird gesucht. Wird Timeout gefunden, dann ist der Rechner nicht online.
$temp = strpos($eingabetext,"$suchtext");

if ($temp=="")
echo "<br><br>Der Rechner mit der IP ".$ip." ist online";
else
echo "<br><br>Der Rechner mit der IP ".$ip." ist offline";
}

?>

</font><br>
<th>
</tr>


</table>

</body>
</html>


So ich hoffe, dass konnte Dir was helfen.

Gruß
Loko
 
ich hab nun ein kleines script gebastelt, dass die ip beim ausführen in die text-datei schreiben sollte... nur macht ers nicht... wo ist der fehler?
PHP:
<?
function url() {
$ip = file("ip.txt");
$site = "http://".$ip."/";
$fp = @fopen("$site","r");
if ($fp) 
{
fclose($fp);
echo "<a href=\"".$site."\" target=\"_blank\">vinzi.de</a>";
}
else { 
echo "offline";
}
}
function writeip() {
echo "$REMOTE_ADDR";
echo "<br> \n";
$ip = "$REMOTE_ADDR";
if(file_exists("ip.txt")) {
unlink("ip.txt");
echo "Datei gelöscht...<br> \n";
}
if(touch("ip.txt")) {
echo "Datei erstellt...<br> \n";
}
if(chmod("ip.txt",0755)) {
echo "CHMOD 755 erfolgreich...<br> \n";
}
$datei = @fopen("ip.txt","w");
if(fwrite($datei,$ip)) {
echo "IP eingetragen...<br> \n";
}
fclose($datei);
echo "Neue IP:".$ip;
}
switch ($action) {
	default:
	url();
	break;
	case write:
	writeip();
	break;
}
?>

Wenn ich ping.php?action=write ausführe kommt folgendes heraus:

Code:
(<br>)
Datei gelöscht...
Datei erstellt...
CHMOD 755 erfolgreich...
Neue IP:

Also $ip bleibt einfach leer, woran liegts?
 
$REMOTE_ADDR ist nur im "Haubtscript" vorhande entweder du übergibst sie direkt an die Funktion oder du schreibst irgendwo in die Funktion am besten am Anfang :

global $REMOTE_ADDR;

dann müsste es gehen

tob
 
Zurück