• ベストアンサー

シェルスクリプトでFTPの実行結果を取得するには

OS redhat linux シェル bornシェル でftpを実行するスクリプトを作っていますが、 ftpの実行結果は取得できるのでしょうか? ftp -n < ftpCom.txt 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

No.1です。補足拝見しました。 直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。 FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、 ftp -nv < ftpCom.txt > ftpLog.txt 2>&1 を例えにとると、このコマンドを実行した後に、 grep ^226 ftpLog.txt > /dev/null if $? ne 0 then echo "FTPでエラーが発生しました" >> logfile exit 1 fi みたいなことをしていました。grep の引数 ^226 は行頭が226から始まる行を検索、という意味で、grepでマッチする行があった場合は0が戻り値となり、マッチしなければ0以外が戻り値となるので、それを利用していました。 実際の運用では、処理が異常終了したときにlogfileを見て、FTPのエラーだったらさらにftpLog.txtを見る、みたいな感じでした。 なお、FTPサーバが返すコードについては下記RFCの4.2辺りを参照してください。もっとも、サーバによってこれら全てが実装されてるとは限りませんが。 http://hp.vector.co.jp/authors/VA002682/rfc959j.htm

take_july
質問者

お礼

ありがとうございました。 grepで解決できました。

その他の回答 (1)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ftp -n < ftpCom.txt > ftpLog.txt 2>&1 でできませんでしょうか?

take_july
質問者

補足

回答ありがとうございます。 すいません。説明が不足しておりました。 ftp -nv < ftpCom.txt > ftpLog.txt 2>&1 等でログには出力できるのですが、SHELLの中でエラーコード等 を取得して正常に完了したかどうか判定する方法はるのでしょうか?

関連するQ&A