Problem mit Net::Ping nach Reconnect

zebu

Grünschnabel
Hallo,

ich bin Perl-Neuling und benutze ActivePerl unter W2k.
Ich versuche die Verfügbarkeit eines Remotehosts über das Net::ping - Modul zu ermitteln.
Stelle mir das in etwa so vor:
Code:
use Net::Ping;

$remothost = "ir.gend.was";

while(1){
	$p = Net::Ping->new("icmp");
	if($p->ping($remotehost,1)) {
		print "erreichbar\n";
	}
	else{ 
		print "nicht erreichbar\n";
	}
	sleep(30);
	$p->close();
}
Wenn das Skript ausgeführt wird, funktioniert es auch so lange bis die Internetverbindung unterbrochen wird. Nachdem die Internetverbindung neu aufgebaut worden ist, schlagen alle weiteren Pings fehl. Erst nach einem Neustart des Skript funktioniert es wieder.

Wäre für jede Info dankbar.

Grüße
zebu
 
So, nachdem ich unter Linux und Windows mit diesem Problem experimentiert und auch Verscheidened über Net::ping gelesen habe, vermute ich, dass es an der nicht ganz einwandfreien Implementierung der ICMP-Protokolls von Net::ping liegt.

Für mich lässt sich das Problem leicht lösen indem ich das TCP-Protokoll anstatt von ICMP nutze. Das bringt auch den Vorteil, dass keine Administrationsrechte für die Ausführung benötigt werden. Wenn nicht auf ICMP verzichtet werden kann, ist es wahrscheinlich am ratsamsten den Ping-Befehl aus der Konsole im Perlskript zu verwenden und die Rückgabe auszuwerten.

Nachtrag:
Leider musste ich nach dem Umschalten von Linux auf Windows feststellen, dass das TCP-Protokoll in Zusammenhang mit dem Ping aus Net::ping nicht mit ActivePerl 5.6.1 funktioniert. Deshalb verwende ich nun doch den Ping-Befehl aus der Konsole und es läuft bisher auch vorzüglich...
 
Zuletzt bearbeitet:
Zurück