Leser: 19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/usr/bin/perl use strict; use warnings; # Modul einbinden use Net::FTP; # Ftp-Verbindung herstellen my $ftp = Net::FTP -> new ("<SERVER>") or warn "Fehler: Nicht verbunden."; $ftp -> login ("<BENUTZERNAME>", "<PASSWORT>") or warn "Fehler: Nicht eingeloggt."; # Bestand der Ftp-Verbindung während 10 Sekunden nach jeder Sekunde überprüfen for(1...10) { my $test = $ftp -> pwd or warn "Fehler: Konnte Verzeichnis nicht anzeigen."; # my $test = Net::FTP -> new ("<SERVER>") or warn "Fehler: Nicht verbunden."; print $test . "\n"; sleep 1; }
2009-03-27T14:03:02 meier19Darf ich daher meine Frage wie folgt präzisieren: wie kann das Stehenbleiben des Programms abgebrochen werden?
2009-03-27T09:19:50 esskarNein, weil der Ping über UDP läuft und deswegen nur testen kann, ob der Rechner dort antwortet.wäre es nicht sinvoller, nen ping zu machen, um die connection zu testen?
Guest werEin Portscniffer überprüft nur per TCP bestimmte Antworten auf den Ports 20/21.Ich bin mir nicht sicher, ob du dich wirklich einloggen must um zu testen, ob der Server da ist. Es sollte reichen zu testen, ob Ports 20/21 auf dem Rechner reichbar sind.
220 213.165.93.119 FTP server ready
1
2
3
4
5
6
7
8
9
10
11
12
my $ret;
eval {
local $SIG{ALRM} = sub { die "timeout" };
alarm(5);
$ret = $ftp->pwd;
alarm(0);
};
if (!defined $ret) {
$ftp = Net::FTP->new(....);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl use strict; use warnings; # Modul einbinden use Net::FTP; # Variable definieren my $server = "<SERVER>"; my $benutzername = "<BENUTZERNAME>"; my $passwort = "<PASSWORT>"; # Ftp-Verbindung herstellen und einloggen my $ftp = Net::FTP -> new ($server) or warn "Nicht verbunden"; $ftp -> login ($benutzername, $passwort) or warn "Nicht eingeloggt"; # Bestand der Ftp-Verbindung während 10 Sekunden nach jeder Sekunde # überprüfen und bei deren Nichtbestand eine Aktion auslösen. for(1...10) { my $ret; eval { local $SIG{ALRM} = sub { die "timeout" }; alarm(5); $ret = $ftp -> pwd; alarm(0); }; if (!defined $ret) { $ftp = Net::FTP -> new ($server) or warn "Verbindung abgebrochen"; print "OK!\n"; exit; } sleep 1; }