アプリ版:「スタンプのみでお礼する」機能のリリースについて

Bシェルプログラムで、あるファイルをFTP送信する処理を作っています。そのなかで、もし、FTPでファイル転送を失敗した場合、転送エラーをログファイルなどに残し、ファイルを再送する処理を組みたいのです。
FTPはエラーが判断できない(エラーのReturnがない)と聞きました。なにか、よい方法はないでしょうか?

A 回答 (3件)

送信処理後、そのファイルをgetしてみて、送ったものと等しいかを確認するとか。



今使っている環境だと、net/ftp.rbやNet/FTP.pmといったftpセッションをプログラミングできるモジュールが標準で入っているので、自分ならrubyなりperlなりで書いてしまいます。

――という場合もあるので、どういう環境で何が使えるかを明記しておかないと、的確な回答は寄せてもらえないかと。

この回答への補足

説明不足ですみません。
HP-UXからPC(WINDOWS2000)へ、ファイルを送信します。
ファイルの数と名前は決まっていません。(ファイル名は先頭は固定文字で、後ろに日時がつきます)
>ftpセッションをプログラミングできるモジュールが標準で入っている
現在、対象としている環境に、上記のモジュールが標準で入っているかどうかは、どこで調べればよろしいのでしょうか?
また、環境説明については、他に調べて明記すべきことはありますでしょうか?
すみませんが、全く詳しくないので、教えてください。
よろしくお願いいたします。

補足日時:2003/12/22 10:57
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。
自分のわかる範囲で補足させていただきました。(簡単なところしかわからなくて、申し訳ないです)

何か、他に調べて記述する事がありましたら、教えてください。よろしくお願いいたします。

お礼日時:2003/12/22 11:03

あなたの環境がさっぱりわからないのですが、


私の場合は
rsync
でファイル転送します。
シェルスクリプト内でエラーコード($?)が返ってくるので都合がよいです。
ご参考まで。
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。
一番下で、自分のわかる範囲で補足させていただきました。(簡単なところしかわからなくて、申し訳ないです)

何か、他に調べて記述する事がありましたら、教えてください。よろしくお願いいたします。

お礼日時:2003/12/22 11:04

BシェルでFTPする方法で、多分一番手ごろな方法は、ヒアドキュメントを使った方法だと思いますが、使える環境によっては、他にも選択肢はあります。


とりあえず、今前提にしているのが、ヒアドキュメントを使った方法だと仮定して、回答します。
コマンドを実行したときの返り値は、通常そのコマンドそのものの実行の返り値です。
FTPの場合、コマンドの実行と、通信の結果はまったく別物ですので、通信の結果は返り値には反映されません。
で、具体的にどうすればいいかというと、送信対象のファイルの数が一定であれば、FTP実行時の出力を、一時的なログファイルにリダイレクトします。
FTPコマンド成功時の出力
「Transfer complete.」
の数を、FTP処理が終わった後でカウントすれば、それが想定よりも少ない場合は、失敗と判断できます。

ご参考までに。
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。
一番下で、自分のわかる範囲で補足させていただきました。(簡単なところしかわからなくて、申し訳ないです)

何か、他に調べて記述する事がありましたら、教えてください。よろしくお願いいたします。

お礼日時:2003/12/22 11:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています