Thread Net::FTP - Verbindung prüfen - Skript blockiert (10 answers)
Opened by meier19 at 2009-03-26 17:35

meier19
 2009-03-27 18:08
#119886 #119886
User since
2009-02-03
73 Artikel
BenutzerIn
[Homepage] [default_avatar]
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).

View full thread Net::FTP - Verbindung prüfen - Skript blockiert