Freihändig

Dateitransfers automatisieren

01.02.2006
Immer wieder dieselbe langweilige Kombination aus Usernamen und Passwort zu tippen, kann auf Dauer ganz schön ermüden. Bei FTP-Downloads spart die textbasierte Makrosprache eine Menge Tipparbeit.

Der De-facto-Standard für die Übertragung von Dateien via Internet heißt FTP (File Transfer Protocol). Das Protokoll existiert schon seit vielen Jahren, und obwohl es nicht besonders sicher ist, hat es aufgrund seiner Robustheit und Beliebtheit wohl noch eine lange Zukunft vor sich. Dieser Artikel verrät, wie Sie mit Hilfe eines Skripts eine Verbindung zu FTP-Servern aufbauen und Dateien herunterladen können.

<C>.netrc<C> richtig eingesetzt

Egal, ob Sie FTP im Batch- oder interaktiven Modus verwenden: Eine automatische Anmeldung bei der Gegenstelle spart das lästige Eintippen von Username und Passwort. Dafür sorgt eine Datei namens .netrc in Ihrem Home-Verzeichnis. Stellen Sie die Berechtigungen für .netrc auf Lesen/Schreiben nur für den Dateibesitzer (chmod 600): Benutzernamen und Passworte lagern dort im Klartext.

Die Datei kann mehrere Einträge für Remote-Sites enthalten. Sobald Sie eine .netrc besitzen und einen FTP-Befehl für eine dort aufgeführte Maschine eingeben, greift FTP auf den Benutzernamen und das Passwort des Eintrags zurück.

Die Einträge in der .netrc müssen in keinem bestimmten Format vorliegen; Sie können die einzelnen Informationen können wahlweise durch Leerzeichen, Tabulatoren oder Zeilenumbrüche trennen. Recht übersichtlich fällt aber die Variante unter Verwendung von Zeilenumbrüchen aus:

machine RemoteHost
        login LoginName
        password Passwort
        password PasswortFuerKonto

Für jeden Remote-Host enthält die Datei einen Eintrag. Als Passwort geben Sie das für den Aufbau der Verbindung erforderliche Passwort an. Ein PasswortFuerKonto brauchen Sie nur dann, wenn der Remote-Host eine zusätzliche Authentifizierung verlangt – in der Regel genügen die ersten drei Einträge.

Listing 1 zeigt eine .netrc mit drei Einträgen, wobei hier alle Daten für eine Gegenstelle in einer Zeile stehen. Beim ersten Eintrag handelt es sich um einen öffentlichen FTP-Server im Web, deshalb der Loginname anonymous. Obwohl es als höflich gilt, die eigene E-Mail-Adresse als Passwort für die anonyme Anmeldung anzugeben, ist das nicht zwingend erforderlich. Die beiden anderen Zeilen stehen für Hosts im internen Netzwerk.

Listing 1

machine ftp.emea.ibm.com  login anonymous  password david.tansley@btinternet.com
machine uk01lx6001        login dxtans     password lOopy
machine uk04lx6003        login dxtans     password mas123

Um eine Verbindung zum Host uk01lx6001 aufzubauen, geben Sie ftp uk01lx6001 ein. Der FTP-Client sucht dann in .netrc nach dem Hostnamen uk01lx6001. Anschließend setzt er die Login- und Passworteinträge für den Verbindungsaufbau am Remote-Server ein. Einen Überblick über die Startoptionen des FTP-Kommandos gibt die Tabelle "FTP-Optionen".

FTP-Optionen

Option Bedeutung
-p Verwendet für Datenübertragung den so genannten passiven Modus. Er ist erste Wahl, wenn Ihr Rechner hinter einer Firewall steht, weil der Client dann dem Server den zu nutzenden Port mitteilt. Heute gilt der passive Modus als Standard, aber es gibt noch ältere Versionen, die diesen Modus nicht als Voreinstellung wählen.
-i Damit fragt der Client vor jedem FTP-Transfer noch einmal nach einer Bestätigung. Wenn Sie wissen, welche Dateien Sie abholen oder schreiben wollen, ist diese Option sehr nützlich.
-n Unterbindet die automatische FTP-Anmeldung beim Verbindungsaufbau. Wenn Auto-Login aktiviert ist, sucht FTP in .netrc nach den Login-Daten. Findet FTP keine passenden Informationen in .netrc, fragt es nach Benutzernamen und Passwort.
-v Setzt den so genannten Verbose-Modus, in dem FTP etwas detailliertere Informationen ausgibt.

Wie man Dateien abholt

Das erste FTP-Skript soll eine Verbindung zu einem Remote-Host aufbauen und die Datei /etc/hosts herunterladen (siehe Listing 2). Die erste Zeile nach dem Bash-Aufruf schaltet den interaktiven Modus von FTP aus und den Verbose-Modus ein.

Um ftp mit Befehlen zu füttern, kommt anschließend ein so genanntes Here-Dokument zum Einsatz. Alle Kommandos zwischen der Startmarke <<EOCMDS und der gleichnamigen Schlussmarke EOCMDS übergibt die Shell dem FTP-Client als Eingabe. Statt EOCMDS können sie dabei einen beliebigen Namen für die Marke verwenden.

Zunächst baut die Befehlsfolge eine Verbindung zum Host uk01lx6001 auf. Anschließend legt das Skript für die Übertragung mit ascii den ASCII-Modus fest. Lokal wechselt das Skript ins Verzeichnis /tmp, auf der Gegenseite nach /etc. Dann findet die eigentliche Übertragung der Datei hosts statt, die das Skript im Verzeichnis /tmp ablegt. Der Befehl quit beendet den FTP-Client.

Listing 2

#!/bin/bash
ftp -i -v <<EOCMDS
open uk01lx6001
ascii
lcd /tmp
cd /etc
get hosts
quit
EOCMDS

Sie können die Methode auch verwenden, um eine Liste der zu übertragenden Dateien anzugeben. Allerdings müssen Sie dann für jeden Transfer eine Verbindung auf- und wieder abbauen. Wie das funktioniert, zeigt Listing 3. Eine for-Schleife innerhalb des FTP-Codeblocks können Sie deshalb nicht verwenden, weil Sie an dieser Stelle mit der FTP-Verbindung zum Remote-Host arbeiten und nicht mit der Bash-Shell.

Listing 3

#!/bin/bash
list="hosts hosts.allow hosts.deny"
for files in ${list}; do
  ftp -i -v <<EOCMDS
    open uk01lx6001
    ascii
    lcd /tmp
    cd /etc
    get ${files}
    quit
  EOCMDS
done

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Sammeldienst
    Nichts ist so gut, dass es nicht noch besser ginge: Der POP3-Client Mpop besticht durch eine schlanke Architektur und einige Features, die ein flottes Arbeiten versprechen.
  • Netzwerkspeicher per Dateimanager einbinden
    Webhoster geben Ihnen üblicherweise einen FTP-Zugang, um Daten auf Ihren Online-Speicher zu laden. Unter Linux genügt ein Dateimanager, um auf Netzwerkspeicher zuzugreifen.
  • Zu Befehl
    Jedesmal, wenn Sie sich über telnet auf einem Rechner anmelden oder per ftp Daten von einem Computer zu einem anderen übertragen, wird das Passwort – wie alle anderen Daten auch – im Klartext gesendet. Damit kann jeder, der den Netzverkehr "abhört", Informationen und damit auch Zugang zum benutzten Account bekommen. Mit der Secure Shell (ssh) und den dazugehörenden Kommandos ssh für das Login und scp zur Dateiübertragung sind sie auf der sicheren Seite: Hier kommen verschlüsselnde Alternativen auf der Kommandozeile.
  • Telefonieren mit Asterisk als Telefonanlage
    Internet-Telefonie ist viel nützlicher, als es den Anschein hat. Aus einem alten Rechner basteln Sie für zu Hause einen kompletten Telefon-Server, der die gesamte Familie über Softphones oder Hardware-Telefone zum Quasseln bringt. Wir zeigen den Weg.
  • Ferngesteuert
    Für die schnelle Hilfe am Linux-PC brauchen Sie nicht unbedingt vor Ort zu sein. Wir zeigen, wie Sie den Rechner von Freunden und Bekannten über das Internet administrieren.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.