PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rückgabewerte von ftp-befehlen im skript abfragen?!?!?



rens
03.05.04, 13:14
hallo an alle linuxer,
kann mir jmd posten, wie ich in einem ftp-script an die rückgabewerte der einzelnen ftp-befehle komme?
hier ein kurzes bsp. (pseudocode):

#! /bin/sh

ftp IP-Adresse
get FILENAME

rückgabewert von get, ob der transfer vollständig war?????

wenn vollständig
dann delete FILANAME
sonst mail an win-admin

thx
rens

Natty
03.05.04, 13:33
Vielleicht lenkst du die Ausgabe von ftp einfach in ein file und grepst dann in dem file nach der meldung die kommt wenn der transfer erfolgreich war. dann bräuchtest du allerdings irgewie ein timeout, sonst hängt das script wenn ftp nicht fertig wird...
weiss nicht ob das so geht, aber ich habe auch nur drei h geschlafen. :ugly:

psycho0815
03.05.04, 13:42
mit der bash alleine wird das nicht gehen, da ja get ein befehl des ftp-client ist, aber es wird doch ganz bestimmt nen ftp-client geben der makros und/oder scripte unterstützt. Google doch mal.

edit:
http://www.users.qwest.net/~eballen1/scripting.ftp.html -- verschiedene möglichkeiten ftp mit shell-scripten an zu steuern.

http://www.columbia.edu/kermit/ftpclient.html -- komplett scripbarer ftp-client.

hab die links nicht getestet, sind von google

core
03.05.04, 13:59
mit der bash alleine wird das nicht gehen, da ja get ein befehl des ftp-client ist, aber es wird doch ganz bestimmt nen ftp-client geben der makros und/oder scripte unterstützt. Google doch mal.

Mh?

'ftp' ist Scriptfähig. Aber der rückgabewert ist glaube ich immer 0..

Kleine Anleitung die ich anderswo schon mal geschrieben habe:

---------------------

Dazu legt man sich zuerst die Datei ~/.netrc an. In dieser trägt man IP, Login und Passwort ein.
Ein Beispiel:

machine 192.168.0.23
login username
password geheim
Diese Datei benötigt dann etwas restriktive Rechte: chmod 600 ~/.netrc

Nun schreiben wir uns ein FTP Script, also eine normale Textdatei mit Kommandos für 'ftp'. Ich nenne sie jetzt mal 'ftpscript':

open 192.168.0.23 21
ls
<mehr Kommandos>
quit
Und nun Testen wir das Ganze Verbose: ftp -iv <ftpscript
Klappt! ;) Also lassen wir ab jetzt -v weg und benutzen nur noch
ftp -i <~/ftpscript >/dev/null 2>&1
Da wir von der FTP Prozedur nichts sehen wollen schicken wir die Bildschirmausgabe mittels >/dev/null 2>&1 nach /dev/null.

----------
passt jetzt nicht ganz mit der ausgabe, Kannst das ja wie oben schon erwähnt mit grep auswerten..

psycho0815
03.05.04, 16:21
das ist ja kein script.
die befehle werden halt an stdin von ftp gegeben. für ftp ist das als würde man die per hand eingeben. Kermit (siehe meinen vorherrigen post) kann man wirklich scripten in einer eigenen sprache die beherrscht auch fall unterscheidungen und error handling. also genau das was er braucht.
hab mir das grad mal angeguckt ist nicht sehr schwer.

rens
03.05.04, 20:17
danke schon mal im voraus psycho0815!
an den vorschlag mit der umleitung in ein file + grep habe ich auch schon gedacht.
so eine elegante lösung ist es aber nicht...
deshalb werde ich mir deine links mal genauer anschauen.

einen dank natürlich auch an alle anderen

mfg

rens

core
03.05.04, 23:33
das ist ja kein script.
die befehle werden halt an stdin von ftp gegeben.
Darüber streite ich mich doch gerne..

Also was ist ein Script?

Eine Textdatei in der Anweisungen für einen Interpreter notiert sind.
Also ist ftp in diesem Fall der Interpreter dem die Anweisungen zugeschoben werden. ;)
Was anderes macht dein Beispiel da übrigens auch nicht, wenn du mal genau hinschaust:



ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT


Es ruft ftp mit dem Parameter $HOST auf und .. na? <<END_SCRIPT
Jagt den rest in stdin von ftp bis zur Zeile END_SCRIPT.

Gruss