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