staging.inyokaproject.org

FTP-Interaktion

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Inhaltsverzeichnis
  1. Bash
  2. Ruby
  3. Python
  4. Perl

Häufig wird zum Übertragen von Dateien über ein Netzwerk das FileTransferProtocol verwendet. Hier gibt es einen kurzen Einblick, wie man in Skripten in verschiedenen Programmiersprachen dieses Protokoll verwenden kann. Die Skripte zeigen das grundsätzliche Vorgehen, individuelle Anpassungen sind vor der tatsächlichen Nutzung notwendig.

Bash

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash
# Diese Datei:
lokal_file=/tmp/test1
# ... wird hochgeladen nach:
remote_file=/var/tmp/remote_test1
# ftp starten und die Befehle mit einem here-doc angeben:
ftp -n <<EOFTP
open zielhost
user uid4711 null8fuenf10
bin
put $lokal_file $remote_file
quit
EOFTP

Zu möglichen Anweisungen für den ftp-Befehl s. man ftp.

Die Zugangsdaten kan man auch in der Datei .netrc im home-Verzeichnis ablegen (s. man netrc).

1
2
3
4
# ~/.netrc
machine zielhost
login uid4711
password null8fuenf10

Ruby

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
require 'net/ftp'

ftp = Net::FTP.new('ftp.server.tld')

ftp.login('user','pass') # für anonymen Login einfach die Parameterliste weglassen

ftp.list

ftp.getbinaryfile('xyz.gz')

ftp.gettextfile('xyz-license.txt')

ftp.close

Python

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from ftplib import FTP
ftp = FTP("ftp.server.tdl")
ftp.login("user","pass")            # für anonymen Login keine Parameter angeben
files = ftp.retrlines("LIST")       # Verzeichnisinhalt nun in der Variable files

fp = file("test.html","r")          # test.html lesend öffnen
ftp.cwd("daten")                    # Ins "daten" Verzeichnis wechseln
ftp.storlines("STOR test.html", fp) # test.html unter dem Namen test.html speichern
ftp.quit()                          # Verbindung beenden
f.close()                           # Dateiobjekt schließen

Perl

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl -w
use Net::FTP;

$ftp = Net::FTP->new("kernel.org");        # Verbinden mit Kernel.org
$ftp->login;                               # Einloggen: Ohne Angaben wird automatisch Anonymous genommen

$verz = $ftp->pwd();                       # Speichert das aktuelle Verzeichnis in $verz
print "Wir befinden uns in $verz\n";

$ftp->cwd("/pub");                         # Wechselt in das Verzeichnis /pub
@files = $ftp->ls;                         # Liest den Inhalt des aktuellen Verzeichnisses. Dateinamen werden in Array gespeichert.
print "$_\n" for @files;                   # Gibt den Inhalt des Arrays Zeilenweise aus.

$ftp->binary;                              # Wechselt zum Binary Modus
$ftp->ascii;                               # Wechselt zum ASCII Modus

$ftp->cdup;                                # Wechselt zum ueberligendem Verzeichnis.
$ftp->get("welcome.msg");                  # Lädt die Datei welcome.msg herunter.

$ftp->quit;                                # Beendet die verbindung

Diese Revision wurde am 24. März 2012 23:48 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung