Perl Net::Ping Ausgabeformat

Flockyflo

Lieutenant
Registriert
Okt. 2008
Beiträge
977
Hallo zusammen,

ich möchte bestimmte Computer mit einem Perl Skript anpingen und das Ergebnis in ein Lofile schreiben. Das Skript ansich ist fertig und funktioniert auch:

Code:
#!perl -w
use strict;
use Net::Ping;
use Time::Local;

my $datei = "C:/Dokumente und Einstellungen/user/Desktop/tst";
my $logfile = "C:/Dokumente und Einstellungen/user/Desktop/logfile";
my $date = localtime(time);

	if ( -e $logfile ) 
		{                                                   
		print "Datei $logfile existiert\n";
		}
#	else 
#		{                                                             
		open LOGFILE, '>>', $logfile or die "Kann Datei $logfile nicht zum Schreiben oeffnen: $!\n";
#		}
	
print LOGFILE "\n\n------------------ $date ------------------\n\n";
	
open (FILE,'<',$datei) or die "Fehler beim oeffnen: $!\n";


my $cnt = 0;
while (my $srvlist = <FILE>) 
    	{

	$cnt++;
	print "\n\tServer Nr. $cnt mit IP: $srvlist\n";
	my $server = `ping $srvlist`;
	
	my $pingen = Net::Ping->new("icmp");

	
	$pingen->ping($server);
	
	print $server;
 	print LOGFILE "$server\n";
 
	}

close LOGFILE;
close FILE;

Wie gesagt, es funktioniert schon mal, nur möchte ich jetzt die Ausgabe so verändern, das er mir nur noch in das Logfile schreibt, ob der Server erreichbar ist oder nicht.
Mein Problem ist jetzt, das ich nicht genau weiss, was ich schreiben müsste, wenn der Server nicht auf den Pingrequest reagiert und das Skript eine Fehlermeldung schicken soll.

Bisher hab ich schon so einiges Versucht, leider ohne Erfolg.
Entweder das Skript spuckt nur noch Fehlermeldungen heraus oder es sagt mir einfach das der Server erreichbar ist, egal ob er es jetzt wirklich ist, oder nicht.

Ich hoffe mir kann einer von euch weiterhelfen ;)
 
Ja, das hab ich bereits merfach verwendet, aber immer wieder kamen Fehlermeldungen.
Ich denke mal ich mach irgendetwas bei der verwendung mit dem Array falsch.

Code:
foreach $server (@host_array)
{
print "$server is ";
print "NOT " unless $p->ping($server, 2);
print "reachable.\n";
sleep(1);
}

Eigentlich müsste ich die Serverliste in das Array einlesen lassen, aber ich hab es schon in die Variable $srvlist eingelesen. Das ich jetzt eines von beiden dur ein anderes ersetze oder das Array so definiere das es die Variable ist, hat leider nicht funktioniert.
 

Ähnliche Themen

Zurück
Oben