2011-01-10 15 views
0

私は、FTPスクリプトを書き出し、WindowsサーバーからUNIXにいくつかのファイルを取得するために実行するKornShell(ksh)スクリプトを持っています。FTPエラー処理

echo "user <username> <pwd>" >ftpin.out 
echo "bin">>ftpin.out 
echo "get file.txt" >>ftpin.out 
echo "get file2.txt" >>ftpin.out 
echo "!echo $?">>ftpin.out 
echo"bye">>ftpin.out 

ftp -n -i servername <ftpin.out 
echo $? 

ここで、ファイルがソースWindowsシステムに存在するかどうかを確認することはできません。この通常のエラー処理は機能していないので、$?任意のファイルが存在し、他のファイルが存在しない場合は常に0です。私もERRORLEVELをチェックしようとしましたが、UNIX(Solaris 10)では動作していません。

これに対して簡単なエラー処理のサンプルを表示できますか、それを行う方法はありますか?ログファイルの解析も考慮されましたが、他の方法で構築されていますか?他のFTPメカニズムは範囲外です。私たちは普通の古いFTPを使用しています。

+0

'ftp'を使用して停止し、' wget'、 'curl'または' lftp'に切り替えます。 –

+0

申し訳ありません...私の現在の組織はそれを望んでいません。私はこれで無力です。 –

答えて

0

おかげであなたの応答のためなどのtelnet、ftpのは、passwd、fsckは、rloginの、先端、などのインタラクティブなアプリケーションを自動化するためのツールです。私はそれを動作させるために以下の方法を使用しています。ファイルは、ソースサーバーに存在しない場合は、FTPを1つのファイルをコピーするために失敗した場合は、上記の方法により

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 

その後、私は私にエラーメッセージを郵送するalertme.shスクリプトを呼び出します。 このように私はftpin.out自体を上書きして、ftpでファイルの次の取得を停止することさえできます。私はこれのために以下のものをテストするつもりです。

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

もう一度おねがいします。これは、同じような困難に直面している身体に役立ちます。

+0

これは今のところ回避しています。 –

1

私は$を読んでいるとは思わない?働くでしょう。実行されたサブシェルから値を取得するだけです(!コマンドで)。

私はあなたが期待することを見てみることをお勧めします:http://expect.sourceforge.net/ これは無料で、おそらくあなたのLinuxディストリビューションのリポジトリで利用可能です。 Webページから

が期待するような

+0

お返事ありがとうございます。しかし、私が言及したように、私は現在、私の現在の環境にツールをインストールするチャンスがなく、ftp自体を使用するように制限されています。 –