- ベストアンサー
FTPの送信結果を検知したい
WindowsでFTPをバッチファイルから呼び出すことを考えています。FTPで送信エラーが発生した場合に、FTPのエラーとして検知したいのですが、その方法をご存じのかたおりましたら教えて下さい。(Windows-NTで標準で提供されるFTPを使用しています)直接私が確認したわけではありませんが、FTP送信でエラーが発生してもFTPの終了コードが0になってしまうらしく、FTPのエラーを検知できないそうです。WindowsであればWindows-NT以外の環境でもかまいませんので、ご存じのかたおりましたら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
標準のツールでやるなら、ftpコマンドの出力をファイルにリダイレクトして、find か findstr コマンドで適当な文字列の有無で判断するしかないですね。 >FTPで転送後に転送先のホスト内のある処理が自動的に動き とのことですが、転送先ホストで単純にデータファイルの有無で先に進むと、転送途中のファイルを読んだり、転送エラーで途中で終わったファイルを読んだりする可能性があるので、普通は、転送元でデータファイルの正常転送を確認後に目印ファイル(中身は空でよい)を送り、転送先では目印ファイルがあることでデータファイルが正しく受信できたことを判断して目印ファイルを消して先に進む(データファイルを処理する)のが良く使われる手法です。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
#3です。 unix用ではncftpput/ncftpgetがあります。win版が無いかと「ncftpput win32」で検索すると、 http://www.reb00t.com/win32/utils/ にあるようです。 ncftpput --help で簡単なヘルプが出ます。私も今回始めてダウンロードして使ってみましたが、ちゃんと動くようで、ERRORLEVELにエラーが返ります。検索すればunix用だと解説ページも見つかると思います。 見つかったものの、由来がよくわからないバイナリなので、ftpログをfindするほうがお勧めですけど。
お礼
ありがとうございました。これを使ってみます。ご指摘のようにftpログをfindする方法が、安全&確実のように思われますので、この方法と比較してどちらかを採用するようにします。
- N_Shima
- ベストアンサー率62% (53/85)
#1のN_Shimaです。 1)転送側からは「目的のファイル」と「転送するファイルの一覧(DIRコマンドの結果のようなもの)」を転送 2)受信側では定期的に「転送するファイルの一覧」をチェックさせて、ファイルがあれば受信済の実際のファイルと一覧の情報が一致するか突き合わせ 3)情報が一致している場合は目的のファイルを処理 ということを受信側の自動処理の最初にさせられれば良いのではないでしょうか。
お礼
早速の返信ありがとうございます。 実は、転送側のプログラムの作成は、こちらで行いますが、受信側のプログラムは既に既存のシステムのプログラムであり、こちらで作成(改造)する訳にはいかないのです。本件のシステムは、FAXの自動送信システムで以下のように運用されます。 1.転送元からFAXの元データをFTPで転送先へ送ります。 2.受信側では、そのファイルの内容を参照し、指定先へそのファイルの内容をFAXとして送信します。送信が完了すると、そのファイルを削除します。 3.受信側にはたくさんの転送元から、FAX用データがFTPで送られてきます。今回、1つの転送元のFTP転送作業を私どもで、行います。
- N_Shima
- ベストアンサー率62% (53/85)
私が以前同じような事をバッチ処理したときは、FTP処理後に転送先のファイルの有無とタイムスタンプ・ファイルサイズを取得して、転送元と一致するかを確認させていました。
お礼
早速の回答ありがとうございました。 うーん。なるほど。やはりFTPの転送先のファイルまで確認しないとだめですか。今回はFTPで転送後に転送先のホスト内のある処理が自動的に動き、FTPで転送したファイルを削除する可能性があるのです。(処理が完了したファイルを削除します)従って、FTPの転送先のファイルを確認する方法は出来るだけ避けたいのです。
お礼
>標準のツールでやるなら、ftpコマンドの出力をファイルにリダイレクトして、find か findstr コマンドで適当な文字列の有無で判断するしかないですね。 なるほど、その方法がありますね。その方法で出来るか、検討してみます。 >転送先では目印ファイルがあることでデータファイルが正しく受信できたことを判断して目印ファイルを消して先に進む(データファイルを処理する)のが良く使われる手法です。 貴重な、ご指摘ありがとうございます。受信側のプログラムが転送途中で、ファイルを処理するようなことがある場合は、このご指摘をふまえて対策を考えたいと思います。 現在、標準のFTPを使用していますが、下記の点が満足できれば、標準のFTPであることにこだわるつもりはありません。 1.バッチファイルから呼び出せること。 2.Windowsで実行可能なこと。 3.異常終了時に、異常終了の終了コードを返すか、又は簡単にそのことが判ること。 もし、上記のようなFTPをご存じでしたら、教えてください。