• ベストアンサー

FTPコマンドの戻り値について

UnixのシェルでFTPを行っていますが、 接続不可の時にエラーの戻り値を取りたいと考えています。 ただ、 OPEN XXX user aaa acount bbb get ファイル名 取得先/ファイル名 bye というシェルを実行した場合、接続先XXXが有り得ない場合、 戻り値($?)が0以外かと思っていたのですが、表示させると0になっていました。 接続できません、というメッセージは表示されるのですが。。。 戻り値でエラーを判断する方法をご存知の方、よろしく お願いします。

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

  • ベストアンサー
  • pikacchu
  • ベストアンサー率44% (11/25)
回答No.2

こんにちわ。 当方ではftpを自動実行する際、以下のようにしてます。 以下、シェルの内容 ------------------------------------------------------------------ #!/bin/csh ftp -n ホスト名 <<EOF >& 標準エラー出力リダイレクトファイル名 user aaa acount bbb get ファイル名 取得先/ファイル名 bye EOF if (-z 標準エラー出力リダイレクトファイル名) then exit(0) else exit(1) endif ------------------------------------------------------------------ 以上、シェルの内容 簡単に言うと、ftpコマンドにてエラーが発生するとそれらは標準エラー出力 に出力されるので、それをリダイレクトしてファイルサイズが0バイトであれ ばエラーがなかったと判断しています。 エラーが発生した場合は、そのリダイレクトしたファイルを見れば内容がわかります。 今のところ問題なく動作しています。

m_miyachan
質問者

お礼

現在テストのできない状況になってしまったので、 確認ができないのですが、それでいけそうな気がします。 どうもありがとうございました!

その他の回答 (1)

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

ping コマンドで一度接続して確認すればどうでしょう。 ping XXX -n 1 >& /dev/null と実行し、失敗すれば 0以外が返ります。

m_miyachan
質問者

お礼

pikacchuさんのところにも書いた通り、現在テストが できない状況になってしまいました。 できるようになったら早速試してみます。 早速のご回答、どうもありがとうございました。

関連するQ&A

  • 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のhomeディレクトリ

    Red Hat Linux7.3を使用しています。 FTPの設定で困っています。 user---taro home---/aaa/bbb/ccc/taro 上記のようにtaroというユーザのhomeは/aaa/bbb/taroとなっているとします。ログインシェルはcshです。 で、telnetなどでログインした場合は問題なしなのですがftpでログインした際に/etc以下のファイルを参照(get,put)などなどできるようにしたいのですが現状だと/aaa/bbb/taroにログインしてしまい、それより上のパスにはあがれません。 ftpでのログイン時のみ/がhomeとなるようにできないものでしょうか? また、別の良い運用方法などありましたら御教授願います。 よろしくお願い致します。

  • FTPコマンドについて

    こんにちは。 FTPコマンドについて教えていただきたいのですが PUT AAA.dat 'BBB.dat' というコマンドの場合、これはアップした時点で ファイル名をAAA.datからBBB.datに変更すると いうコマンドなのでしょうか? 色々検索したのですが、ズバリの回答が見つから なかったもので、どなたかご存知のかた 教えてください。 よろしくお願いします。

  • FTPでの接続先の初期フォルダについて。

    UNIXよりwindows2003サーバへFTP接続を行います。 接続先の初期フォルダ(ルートディレクトリ)はどうしたら変更できるのでしょうか? 現在の設定では「c:\aaa/bbb/ccc/ddd/eee」とあった場合、 「c:\aaa/bbb/ccc」がルートディレクトリとなっています。 これを「c:\」(cドライブ直下)や別ドライブへ変更したいのです。 ※できる限り、別ドライブへの変更を望みます。 FFFTPの設定で初期ディレクトリを指定しても、接続されるディレクトリは決まっています。 初歩的なことかも知れませんがどなたか教えてください。

  • コマンドプロンプト 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失敗の場合、メールを送りたくてこのようなバッチを作成しました。

  • ftpのコマンド詳細をお教えください。

    「UNIXファイルサーバ内のデータ群」を「Win2000ProのDISK内」に、PC側の操作(FTP)で持ってこようと思います。FTPは出来るのですが、UNIXファイルのあるディレクトリ以下をすべて(子、孫ディレクトリを含めて(穴を掘って))持ってきたいのですが、ftpでサーバに入ってから prompt bin mget * とすると、直下のファイルと、その子は取ってこれます。でも孫以下のディレクトリ以下が持ってこれません。どのようにすれば可能でしょうか? また、持ってこれた子ファイルは、PC内の同一フォルダに一斉に落ちるため(フォルダを生成してくれない)ファイル名が重複している場合こまります。 PC側にも、元と同じようなディレクトリ構成で持ってくるにはどのようにすればいいでしょうか?

  • cronでftp自動転送を行いたい

    ftpで自動ログイン+ファイル転送するシェルを作成して、これをcronで 実行したのですが、ftpが実行されません。()シェル単体で実行すると、転送されます) 何が原因でしょうか?宜しくお願いいたします。 【環境】 FedoraCore5 【シェル(ftp.csh)の内容】 ftp -n xxx.xxx.xxx.xxx << _EOD user xxx xxx ascii put xxxxxxxx quit _EOD 【cron設定】 05 6 * * * root /share/ftp.csh

  • -bash: ftp: コマンドが見つかりません

    ftpでファイルを転送したいのですが、現在出来ておりません。 因みにその端末(サーバ)は外部からのftpのやり取りも必要な為、vsftpdをインストールしています。 試しに、コマンドでftpと入力した時に題目のようなエラーが表示されます。 Linuxはまだ経験が殆ど無く、シェルに関してもまだ分かりません。 ftpクライアントのインストールとか必要でしょうか? それとも何か追加設定が必要でしょうか? 途中のファイアーウォール機器では通過の設定ができております。 教えていただけますでしょうか。 宜しくお願い致します。

  • FTPコマンドでつながらない

    VineLinux2.5とwindowsxpをマルチブートでつかっています。 それにwindows2000のマシンでプロンプトからFTPコマンドでファイルの転送ができると知り、 ftp 192.168.0.4 のようにやってみたのですが、接続が拒否されました、と出てしまいます。 Vineのほうからシェルで試してみると、incorrectと出てやはりつながりません。 XPを起動させて、xp-2000でやっても、拒否されました、と出てしまいます。 PINGは帰ります。 ファイアヲールもきっているつもりです。 パソコン同士はハブでつながっています。 後何を確認すればいいでしょうか?

  • FTP転送をしたいのですが

    あるクライアントでコマンドプロンプトから以下を行っても 処理ができません。(エラーなども出力されません) 20秒ほどたつと、勝手にコマンドプロンプトが終了して しまいます。何が悪いのか、お分かりになる方がいらっしゃいましたら 教えてください。 (ftp.exe は、c:\window\system32 に存在しています。) 宜しくお願いします。 C:\>ftp -n -s:c:\test_ftp.txt xxx.xxx.xxx.xxx (←IPアドレスです) test_ftp.txtファイルは以下のようになっています。 user anonymous binary put c:\test.xls /aaa/test.xls quit