Thread Net::FTP - Verbindung prüfen - Skript blockiert
(10 answers)
Opened by meier19 at 2009-03-26 17:35
Ich hatte den Vorschlag von bloonix nicht gesehen - muss abgegeben worden sein, während ich die Stellungnahme formulierte. Der Vorschlag ist super, genau die richtige Antwort auf die eigentliche Frage. Ich verstehe den Code zwar nicht ganz. Aber es funktioniert. Einwandfrei. Herzlichen Dank!
Code (perl): (dl
)
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; } Als nächstes muss ich mir überlegen, wie bewerkstelligt werden kann, dass der Vorgang weiterläuft, während das Programm anderes ausführt - womit wir doch zu parallelen Prozessen kommen. Nötigenfalls würde ich einen neuen Beitrag eröffnen. Last edited: 2009-03-27 18:51:06 +0100 (CET) Der Mensch schöpft seine Gesetze nicht aus der Natur, sondern schreibt sie dieser vor (Immanuel Kant).
|