2011-01-10 6 views
0

Ich habe ein KornShell (ksh) -Skript, das FTP-Skript ausgibt und ausführt, um einige Dateien von Windows Server nach UNIX zu bekommen.FTP-Fehlerbehandlung

Hier kann ich nicht überprüfen, ob die Datei auf dem Windows-Quellsystem vorhanden ist oder nicht. Weil diese übliche Fehlerbehandlung nicht funktioniert und der $? ist immer 0 wenn irgendeine Datei da ist und andere nicht da ist. Ich habe sogar versucht, nach ERRORLEVEL zu suchen, aber das funktioniert nicht unter UNIX (Solaris 10).

Kann jemand Beispiele der einfachen Fehlerbehandlung für dieses zeigen, das funktioniert oder wie man es tut? Log-Datei Parsing wurde auch in Betracht gezogen, aber gibt es andere eingebaute? Andere FTP-Mechanismen sind nicht verfügbar. Wir benutzen einfach altes FTP.

+0

Beenden Sie 'ftp' und wechseln Sie zu' wget', 'curl' oder' lftp'. –

+0

Sorry ... meine derzeitige Organisation will das nicht. Ich bin darin hilflos. –

Antwort

0

Vielen Dank für Ihre Antworten. Ich verwende die folgende Methode, damit es funktioniert.

echo "user <username> <pwd>" >ftpin.out 
echo "bin">>ftpin.out 
echo "get file.txt" >>ftpin.out 
echo "! [ ! -f file.txt ] && ksh alertme.sh" >>ftpin.out 
echo "get file2.txt" >>ftpin.out 
echo "! [ ! -f file2.txt ] && ksh alertme.sh" >>ftpin.out 
echo"bye">>ftpin.out 

ftp -n -i servername <ftpin.out 

Durch das obige Verfahren, wenn FTP nicht eine Datei kopieren, wenn die Datei in dem Quellserver nicht vorhanden ist, dann werde ich alertme.sh Skript rufen Sie mich an eine Fehlermeldung per Post zu. Auf diese Weise kann ich es sogar verwenden, um ftpin.out selbst zu überschreiben, um den nächsten Abruf einer Datei in ftp zu stoppen. Ich werde das Folgende hier testen.

echo "! [ ! -f file.txt ] && echo bye>>ftpin.out" >>ftpin.out 

Danke nochmal. Hoffe das hilft für jeden Körper mit ähnlichen Schwierigkeiten.

+0

Es ist eine Arbeit für jetzt. –

1

Ich glaube nicht, $ lesen? wird funktionieren. Sie erhalten nur den Wert von der Subshell ausgeführt (mit dem Befehl!).

Ich schlage vor, Sie könnten einen Blick auf erwarten: http://expect.sourceforge.net/ Es ist kostenlos und wahrscheinlich in Ihrer Linux-Distribution Repository.

Von der Webseite:

Erwarten ist ein Werkzeug für die Automatisierung von interaktiven Anwendungen wie Telnet, FTP, passwd, fsck, rlogin, Spitze usw.

+0

Danke für Ihre Antwort. Aber wie ich bereits erwähnt habe, bin ich zur Zeit darauf beschränkt, ftp selbst zu benutzen, ohne irgendeine Möglichkeit zu haben, irgendwelche Werkzeuge in meiner gegenwärtigen Umgebung zu installieren. –