www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

ftp-client.pl
#!/usr/local/bin/perl -w
# ftp-client.pl -- Hole eine Liste FTP-URLs von FTP-Servern
# Verwendung: ftp-client.pl FTP-URL-LISTE [FTP-URL-LISTE ...]

use Net::FTP;                  # FTP-Protokoll aus dem CPAN
use File::Basename;            # basename() eines Pfades

# ----- CONFIGURE -----------------------------------------------
use constant USER => 'anonymous';                  # i.d.R. okay.
use constant PASS => 'farid.hajji@ob.kamp.net';    # Anpassen!
# ----- END OF CONFIGURE ----------------------------------------

while (<>) {
        chomp;   # Abschliessendes Newline entfernen

    # Nur FTP-URLs der Form: ftp://hostname/path akzeptieren
        next unless m|(.+?)://(.+?)/(.+)|;
        ($proto, $host, $path) = ($1, $2, $3);
        next unless $proto eq 'ftp';

    # Erzeuge neues Net::FTP-Objekt mit dem Ziel $host
        my $ftp = Net::FTP->new($host);
    unless (defined $ftp) {
        warn "Can't create Net::FTP Object to $host: $@\n"; next;
    }

    # Beim FTP-Server einloggen
        unless (defined ($ftp->login(USER, PASS))) {
        warn "can't login to $host\n"; next;
    }
    
    # Binary-Modus, damit Dateien unveraendert bleiben
        $ftp->binary();
    
    # Hole Datei /$path
        # und speichere sie lokal unter dem gleichen Basename.
    unless (defined ($ftp->get("/$path", basename($path)))) {
        warn "can't get file /$path\n"; next;
    }

    # Aus dem FTP-Server explizit ausloggen.
    # Das ist hier ueberfluessig, da das Objekt $ftp am Ende
    # dieses Blocks automatisch zerstoert und somit die
    # Verbindung im Net::FTP-Destruktor aufgeloest wird.
        $ftp->quit();
}
   

[Prev] [Up] [Relevant Chapter] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:57 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo