ftp in Verbindung mit .netrc nutzen

Um FTP auf Unix-Systemen zu automatisieren, benötigt man die Datei .netrc.

Rechte und Lokation der ''.netrc''

.netrc befindet sich im Home-Verzeichnis und hat die Rechte 0600.

[~]> ls -al .netrc
-rw-------  1 tirili  users  78 Jan 17 18:12 .netrc

Aufbau der .netrc

Maschinendefinition/host-Definition

machine ftp.suse.com
	login anonymous
	password tirili@example.com

machine meinftpserver
	login myusername
	password mypassword

Wenn man jetzt eine ftp-Verbindung zu ftp.suse.com aufbaut, wird automatisch ein Login als anonymous mit dem Kennwort tirili@example.com aufgebaut.

UP

Makro Definitionen

Hier können Makros definiert werden, die automatische Befehle ausführen.

macdef uploadtest
	cd /pub/info
	bin
	put filename.tar.gz
	quit

macdef dailyupload
	cd /pub/info
	bin
	put daily-$1.tar.gz
	quit

UP

:!: Es muss eine Leerzeile nach dem letzten macdef Befehl sein. Andernfalls gibt es eine ftp-Fehlermeldung.

Das erste Makro führt folgendes aus:
Gehe nach /pub/info, wechsele in den binary-Modus und speichere die Datei filename.tar.gz. Anschließend beende die ftp-Verbindung.

Das zweite Makro macht das gleiche wie das erste, mit dem Unterschied, dass es einen Parameter verwendet.

UP

Verwendung der ''.netrc''

innerhalb einer ftp-Session

[~]>ftp meinftpserver
Trying 127.0.0.1...
Connected to localhost.
220 meinftpserver FTP server ready.
331 Password required for myusername.
230 User myusername logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> $ uploadtest
cd temp
250 CWD command successful.
put filename.tar.gz
local: filename.tar.gz remote: filename.tar.gz
150 Opening BINARY mode data connection for 'filename.tar.gz'
100% |**************************************************|  1438       00:00 ETA
226 Transfer complete.
1438 bytes sent in 0.01 seconds (215.00 KB/s)
quit
221 Goodbye.

UP

von der Befehlszeile

[~]>echo "\$ uploadtest" | ftp meinftpserver
Trying 127.0.0.1...
100% |**************************************************|  1438       00:00 ETA

Hier wird nur wenig auf den Bildschirm ausgegeben, da ftp keinen Terminal erwartet. Mittels ftp -v wird es etwas ausführlicher.

UP

Beispiel mit Parametern

[~]>echo "\$ dailyupload `date +'%Y%m%d'`"
$ dailyupload 20060114
[~]>echo "\$ dailyupload `date +'%Y%m%d'`" | ftp meinftpserver
Trying 127.0.0.1...
100% |**************************************************|  1438       00:00 ETA

So wird die Datei daily-20060114.tar.gz hochgeladen.

UP

Debugging von ftp-Sessions

Was schiefgehen kann

  • Leerzeile nach dem letzten macdef-Befehl fehlt
  • .netrc-Datei hat falsche Rechte (0600)

UP

Debugging

  • Wenn das Makro von der Befehlszeile ausgeführt wird, sollte die -v-Option verwendet werden, um mehr Ausgaben zu sehen
  • Wenn ftp mit der Option -d verwendet wird, werden alle Befehle, die zum ftp-Server gesendet werden, dargestellt.

UP

 
wissen/tips_und_tricks/automatisieren_von_ftp_transfers_mittels_netrc.txt · Zuletzt geändert: 23.04.2006 14:14
 
Recent changes RSS feed Donate Valid XHTML 1.0 Valid CSS Recent cached RSS feed cacert-signed web site: inhalt.serviert.de