====== 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~~