Dateitransfers automatisieren

Freihändig

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
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ä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.
  • 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.
  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • Die Bash, das unbekannte Wesen
    Die Leistungsfähigkeit einer Shell ist nur zum Teil durch die komfortablen Möglichkeiten bei der interaktiven Bedienung begründet. Mindestens genauso wichtig sind die "inneren Werte" einer Shell, also die eingebauten Befehle, die Funktionen zur Bearbeitung von Variablen, Skripten und Funktionen sowie anderen Features.
Kommentare

Infos zur Publikation

LU 10/2016: Kryptographie

Digitale Ausgabe: Preis € 0,00
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Aktuelle Fragen

zweites Bildschirm auf gleichem PC einrichten
H A, 30.09.2016 19:16, 2 Antworten
Hallo, ich habe Probleme mein zweites Bildschirm einzurichten.(Auf Debian Jessie mit Gnome) Ich...
Probleme mit MPC/MPD
Matthias Göhlen, 27.09.2016 13:39, 2 Antworten
Habe gerade mein erstes Raspi Projekt angefangen, typisches Einsteigerding: Vom Raspi 3B zum Radi...
Soundkarte wird erkannt, aber kein Ton
H A, 25.09.2016 01:37, 6 Antworten
Hallo, Ich weiß, dass es zu diesem Thema sehr oft Fragen gestellt wurden. Aber da ich ein Linu...
Scannen nur schwarz-weiß möglich
Werner Hahn, 20.09.2016 13:21, 2 Antworten
Canon Pixma MG5450S, Dell Latitude E6510, Betriebssyteme Ubuntu 16.04 und Windows 7. Der Canon-D...
Meteorit NB-7 startet nicht
Thomas Helbig, 13.09.2016 02:03, 4 Antworten
Verehrte Community Ich habe vor Kurzem einen Netbook-Oldie geschenkt bekommen. Beim Start ersch...