• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Linux shell ftp 転送 エラー制御)

Linux shell ftp 転送 エラー制御

500ciiの回答

  • 500cii
  • ベストアンサー率50% (14/28)
回答No.1

正しくは grep ^425 $Log_Path/$date.txt > /dev/null if [ $? -eq 0 ]; then #error_flag=1 exit 1 fi だと思います。 grepは正規表現に該当した行を出力するので、それを「 > /dev/null」で表示させないようにします。 ifの比較の文も変更しています。スペースに注意して下さい。 error_flag=1とexit 1ですがどちらか一つにして下さい。 シェルの実行方法は A) ./aaa.sh B) source ./aaa.sh の二通りありますが、Aではサブシェル内で実行され、Bでは現在のシェル内で実行されます。 Aではerror_flag=1が現在のシェルに引き継がれないので、意味を持ちません。 Bではexit 1で現在のシェルを終了させてしまいます(要するにコマンドプロンプトが閉じる)。

pen123
質問者

お礼

迅速な回答ありがとうございました。 不明点も明確になり、理解が増しました。 基本的な部分がわかっておらず申し訳ありません。 徐々に改善していければと思います。 ありがとうございました。

関連するQ&A

  • Linux shell メール転送エラーの判定

    Linuxのシェルでメール転送部分を作成しました。 動作は問題ないのですが、宛先アドレスを入力し間違えて、メールが送信できなかった際のエラーをログに残せず困っています。 下のようなプログラムを組んで、送信に失敗したらログにはきだされるようにしてみたのですが、 メール送信自体は正常終了と判定されてしまいます。 (メール自体は送信できているからだと思います。送った後にエラーで戻ってきてるんでしょうが。) mail -s "$subject" $address -- -f From_Test << mailbody メール本文 mailbody #--------エラー処理 --------- if test $? -ne 0 then echo "Mail sending error" >>$log.txt fi 送信に失敗したことをログに残すにはどうすればいいでしょうか? ご教授下さい。

  • FTP送信エラーの検知について

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

  • FTP転送エラーについて

    こんにちは。 以下の手順でFTP転送しております。(ポートモード) Window2003 Server → ファイヤーフォール → インターネット → ファイヤーフォール? → FTP Server(海外) 1週間に1回の割合で、下記のようなエラーが発生します。 1日の通信回数は約30回ほどです。 データコネクションは確立されてますので、パッシブモードに変更して も問題は解消されないと見ております。 FTPの経験が浅いのですが、この程度のエラーは想定内として考える べきなのでしょうか? 他のシステムで国内同士のFTPは、まったくエラーにならないのですが・・・。 また、エラーとなる原因等がお分かりになる方がいらっしゃいました ら、アドバイスお願い致します。 220 mailgate Microsoft FTP Service (Version 5.0). 331 Password required for user. 230 User user logged in. FTPサーバへPutします。 ファイル名:/user/file/sample.txt From C:\FTP\data\sample_FCHSHGCD.put 200 Type set to I. 200 PORT command successful. 150 Opening BINARY mode data connection for /user/file/sample.txt. 425 Can't open data connection. //エラー発生 221

  • NTのFTP通信

    こんにちわ Windows NT 4.0 workstationにて(数台) FTP転送したいのですが、 転送するファイル名が固定ではありません。 転送するファイルは以下のようなファイルになります。 yanolog.txt saitolog.txt sayamalog.txt このような場合、下記のputのぶぶんを put *log.txt で実行しても転送されるでしょうか? open ftp.noname.ne.jp bluepixy password ascii put *log.txt close quit よろしくお願いします

  • 自動ftpバッチで転送速度をろぐに出す方法

    こんにちは windows2008で自動ftpバッチファイルを作成ししています。 自動ftpは出来るのですが、転送速度がログに出力されません。 具体的には手動でftpすると以下のように表示される「24000.00KB/秒」という部分を ログに出したいです。 200 PORT command successful. 150 Opening ASCII mode data connection for autoexec.bat. 226 Transfer complete. ftp: 24 バイトが送信されました 0.00秒 24000.00KB/秒。 そもそもログに表示させることはできないのでしょうか? お分かりの方、お教えください。 今作っているバッチファイルはこんな感じです。 ftpauto.txt ---------------- ftp -s:ftpcmd.txt>>ftp.log 2>&1 ftpcmd.txt ---------------- open XX.XX.XX.XX user-id Password bin cd / lcd C:\ put XXX disconnect bye ------------------------------------ 宜しくお願いします。

  • コマンドプロンプト FTPコマンドについて

    こんばんわ。 今回はコマンドプロンプトのFTPコマンドについて質問させてください。 処理概要 Windowsバッチにて、サーバA(Windows)からサーバB(UNIX)にFTPでファイルを複数送りたい その際、FTPが成功したか失敗したかをログファイルに出力したい。 以下プログラム set logDir=C:\hogehoge\log\ set settingFileName=C:\hogehoge\upload.ftp set execDate=%date:~-10,4%%date:~-5,2%%date:~-2,2% set logFileName=%logDir%log_%execDate%.txt echo FTPバッチ起動 >> "%logFileName%" cd C:\hogehoge echo FTP開始 >> "%logFileName%" ftp -s:"%settingFileName% >> "%logFileName%" upload.ftpというファイルには以下のように記述しております。 ftp open サーバIP ポート ログインID パスワード binary prompt mput *.csv bye この2種類のファイルで、FTPは出来るのですが、 どうにかして成功/失敗を判断したいです。 どなたかわかる方、ご教授お願いいたします。 補足 UNIX上のバッチ処理(Cシェル)でもファイルがあるかどうか判断していますが、 WindowsでFTP失敗の場合、メールを送りたくてこのようなバッチを作成しました。

  • シェルスクリプトでエラー時にリトライ方法

    下記のようなシェルスクリプトを作成したいと思っています。 apacheのアクセスログを確認し、 (1)httpステータスが200なら後続の処理を実行 (2)200以外ならエラーを表示させ、  200以外なら5回リトライして5回ともhttpステータス"200"が一度も返ってこなければ(grepに含まれていなければ)スクリプトを中止するような処理を行いたいです。 初心者でループ処理?リトライ処理?というのがよくわかっていなくて… 下記のようなスクリプトにどう手を加えたらいいかご教授いただけますでしょうか。 #!/bin/sh cd /XXX/apache/log if tail -n 5 access_$DATE.log grep "|200|" >/dev/null; then tail -n 5 access_$DATE.log grep "|200|" echo "httpステータスは200です" else echo "httpステータスは200以外です" exit fi : よろしくお願いします

  • FTPで見えるファイルと見えないファイルがあります。

    FTPで見えるファイルと見えないファイルがあります。 CentOS5.4にvsftpdをインストールして、PCからFTP転送を行おうとしています。 /tmpディレクトリにファイルを転送すると、FTPツールに転送したファイルは表示されますが、 元々/tmpにあったファイルはFTP転送ツールに表示され無い状態となっています。 ・FTP転送ツールを再起動しましたが、転送したファイルしか見えません。 又、FTP転送ツールではなく、DOS窓上でFTP接続して、DIRで見た時も転送したファイルしか見えません。 このことから、FTPツールの問題ではなく、FTPサーバー側の問題を判断しました。 ・Linuxサーバを再起動しても、転送したファイルしか見えません。 ・Linuxサーバ上で、転送したファイルを"cp -p"でコピーした場合、コピーしたファイルはFTPツール上見えません。 現在Linux上では、 tmp>ll -rw-r--r-- 1 root root 2 5月 13 17:20 a1.txt -rw-r--r-- 1 root root 2 5月 13 17:20 a2.txt -rw-r--r-- 1 root root 2 5月 13 17:20 b1.txt となっているのですが、 a1.txt:FTP転送したファイル a2.txt:a1.txtを cp -p a1.txt a2.txtでコピーした b1.txt:viで作成した FTPコマンドで見ると、 ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 2 May 13 08:20 a1.txt というようにa1.txtしか見えません。 原因はわかりましたらご教授ください。よろしくお願いいたします。

  • FTPコマンドの戻り値(エラーコード)の意味

    【FTPコマンドの戻り値=”2”は何のエラーを意味するのでしょうか?】 あるアプリからbatファイルを起動する仕組みを作っています。 そのbatファイル内でFTPコマンドによるファイル送信をしていますが、 FTPコマンドの戻り値が正常終了の”0”ではなく”2”となってします。 処理結果をログに出すようにしているのですがそこもうまくいっていないようです。 DOSプロンプトを起動してFTPコマンドを手で入力して行くと ステップごとには正しく動くのですが、bat起動だとだめなのです。 検索してみても「エラーコードの意味」がHitしません。 どなたか教えていただけますか? 【処理詳細を以下に記します。】 内容は、ある制御ファイル(CTL。中身は0バイト)群を FTP転送し、日付入りファイル名のログに結果を出力するだけです。 ○batファイル(引数%1には、アプリから日付が渡されます。) ftp -s:ftpcmd.txt > ftplog_%1.txt ○Txtファイル open xxx.xxx.xxx.xxx (userid) (password) cd (処理ディレクトリ) ascii prompt mput c:\FTP\*.xxx.ctl disconnect bye

  • FTPでのファイル転送失敗

    FTPを使ってファイル転送をしたいのですが、 以下のようなエラーが出てしまいます。 Error opening local file <file名> ローカルファイルが開いているのだと判断したのですが、ローカルコンピュータではファイルは開いておらず、ファイルの保存場所を変更してサイド転送しても同じメッセージがでます。 どうしたらうまくいくのでしょうか?