Um FTP auf Unix-Systemen zu automatisieren, benötigt man die Datei .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
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.
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
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.
[~]>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.
[~]>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.
[~]>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.