FTP自動スクリプトでファイル取得ができない理由と解決方法

このQ&Aのポイント
  • FTP自動スクリプトに関する質問です。取得したいファイルのディレクトリが異なっているため、file1は取得できますが、file2が取得できないという問題が発生しています。手動で行うと、file1,file2の両方が取得できない場合もあり、理解が足りない可能性もあります。FTPの使い方を正しく理解する方法を教えてください。
  • FTP自動スクリプトで取得したいファイルがディレクトリごとに異なるため、file2が取得できないという問題が発生しています。手動で行うと、file1,file2の両方が取得できない場合もあり、FTPの使い方に問題がある可能性があります。FTPの使い方を正しく理解する方法を教えてください。
  • FTP自動スクリプトでファイル取得ができない問題が発生しています。取得したいファイルのディレクトリが異なるため、file1は取得できますが、file2が取得できません。手動で行うと、file1,file2の両方が取得できない場合もあり、FTPの使い方を正しく理解する方法を教えてください。
回答を見る
  • ベストアンサー

ftp自動スクリプト

FTP自動スクリプトに関する質問です。 取得したいファイルのディレクトリが異なっているので、下記のようにシェルスクリプトを作成し、 実行しています。 実行すると、file1は取得できるのですが、file2が取得できません。(シェルが返ってこない。処理が止まる) 手動で行うと、file1,file2両方取得できる場合もあれば、file1のみしか取得できない場合もあります。 (取得できない場合:227 Entering Passive Mode (サーバ名,197,154))が表示されたまま。) そもそも理解(FTPの使い方が間違っている?)が足りない気もしますが、教えていただけると幸いです。 宜しくお願いいたします。 ・ftp_start.txt ----------------------------------------------- open サーバ名 user test **** cd directory1 bin get file1 cd directory2 bin get file2 bye ----------------------------------------------- ・ftp_cmd.sh ----------------------- #!/bin/sh ftp -n < ftp_start.txt ------------------------

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

これだと ログインしたディレクトリ/directory1/file1 ログインしたディレクトリ/directory1/directory2/file2 の2つのファイルをgetしようとしますがあってますか? あとは、自動処理が可能なツール(wget,cURL,ncftp...)等が使えるのなら、そちらで試すのもよいでしょう

yaki_82
質問者

お礼

kmee様 自己解決しました。ありがとうございました。

yaki_82
質問者

補足

kmee様 早速のご回答ありがとうございます。 はい、上記スクリプトは例で、今後もっとgetするファイルは増える予定です。

関連するQ&A

  • シェルスクリプト実行で”そのようなファイルやディレクトリはありません”と出ます。

    以下の単純なシェルスクリプトを実行しようとしています。 ------------------- #!/bin/sh echo ok ------------------- そのとき、 bad interpreter: そのようなファイルやディレクトリはありません と出てしまいます。 ・which sh で確認すると /bin/sh です。 ・Windowsで作ったファイルをFTPのアスキーモードで転送しています。 (ものすごく単純なミスをしてるのかもしれませんが、) よろしくお願いします。

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

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

  • FTPによるファイル取得について

    一定の間隔であるサーバに接続し、画像ファイルを取得するプログラムを作成しています。 C言語で作成されたプログラムより、以下のようなシェルを実行し、画像ファイルを取得することを考えています。 ----------------------------- #!/bin/sh ftp -in <<EOL open 接続先IPアドレス user ユーザ名 パスワード lcd ローカルのディレクトリ cd リモートのディレクトリ mget data[ABC]_${d}.tar.gz quit EOL ----------------------------- ここで、以下のような問題に悩んでいます。 1.上記シェルを実行し、まさにFTPを行っているとき、LAN断などにより遠隔サーバとの接続が切れたときに、だんまり状態となってしまう。 2.FTPが成功した場合、取得したファイルの正当性が保証されるのか?せめてファイルサイズチェックだけでも行いたいが、FTP実行前にファイルのサイズが取得できるか?

  • ftpでファイルアップロードさせるシェルスクリプト

    Linuxで、あるftpサーバーにファイルをアップロードするシェルスクリプトを作る方法を教えてください。 例えば、このようなftpサーバーに対して、以下のスクリプトを作りました。 ■ftpサーバー ftpサーバー:ftp.hogehoge.jp User-ID: user1 Password: password1 アップロードしたいファイル:test.html アップロードしたい場所:/public_html ■シェルスクリプト #!/bin/sh ftp ftp://user1:password1@ftp.hogehoge.jp -u /public_html test.html ■結果 エラーも何も表示せず。 シェルスクリプトを、このようにすると、ftpサーバーにログインはできています。 #!/bin/sh ftp ftp://user1:password1@ftp.hogehoge.jp ここで、以下のように手でファイルをアップロードすることはできています。 ftp> cd public_html 250 CWD command successful. ftp> put test.html local: test.html remote: test.html 227 Entering Passive Mode (210,132,253,13,218,1) 150 Opening BINARY mode data connection for test.html 100% |*************************************| 62 270.29 KB/s 00:00 ETA 226 Transfer complete. 62 bytes sent in 00:00 (1.78 KB/s) ■環境 クライアント側 SuSE Linux 9.3 man ftpを見て、-uを使うのだと思ったのですが、間違ってますでしょうか? よろしくお願いします。

  • シェルでftp接続によるファイル取得について

    以下のようなシェルスクリプトを作成しましたが、 (file-name) get: No such file or directory (file-name) done: No such file or directory のエラーメッセージが出てしまい、うまくいきません。 OSはLinux(FedoraCore4)です。 どうやらファイル名の取得がうまくいかず、エラーになっている 様です。 試しに直接ファイル名を指定して書くと、無事ファイルを 取得できます。 エラーの原因がお分かりになる方、どうぞ宜しくお願い致します。 ----------------------------------------------- #!/bin/sh cd /local_test/log/ ftp -n xxx.xxx.xxx.xxx<< _EOF user test_user test_pass cd /test/log/ ascii prompt for i in *.log do chmod u+r $i get $i chmod u-r $i done bye _EOF exit 0 -----------------------------------------------

  • シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。

    シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。

  • vsftpd FTP転送を行うシェルスクリプトについて

    お世話になっております。 標記の件で少しこまっております。 旧Linuxサーバで使用していたFTP転送用シェルスクリプトが 新Linuxサーバで動かなくなりました。 シェルスクリプトは以下の通りです。 exampleftp.sh # ftp -n -i < exampleftp.txt exampleftp.txt # open (IPアドレス) # user testuser testpass # binary # cd /home/example/ # lcd /home/example/ # mput *.* # close # bye exampleftp.shを実行すると以下のようになります。 # exampleftp.sh # Please login with USER and PASS. # Please login with USER and PASS. # KERBEROS_V4 rejected as an authentication type # Login incorrect. # Login failed. # ?Invalid command # Please login with USER and PASS. # : No such file or directoryi # ?Invalid command # ?Invalid command どうやら、user testuser testpassをしたところ、 ログインに失敗し、エラーになっているようです。 しかし、このtxt内容をシェルで実行せずに、 コマンドを普通に入力していくとログインにも成功し、 エラーにはならず、転送もできました。 なぜか、シェルスクリプトを実行した場合のみ、 ログインに失敗するようです。 いろいろ調べてみましたが、よく解りません。 どなたかご教示お願いできないでしょうか。 よろしくお願いします。

  • FTPコマンドでgetしたい

    FTPコマンドでファイルを転送したい。操作はクライアントで行っています。 サーバ⇒クライアントです。ディレクトリー構成は。(サーバー側)c:\2.txt を⇒(クライアント側)c:\2.txt に転送したいのですがエラーが出ます。次のように実行しています。 ftp>get c:\2.txt c:\2.txt としています。これを実行すると次のエラー 【550 c:\2.txt :The filename is incorrect】 と出ます。どうすればよいでしょうか? ファイルタイプもascii にしたりbin にしたり試しているがだめです。 お願いします。

  • シェルスクリプトの作り方

    OSはVineで、bashシェルです。 シェルスクリプトの作り方ですが、 1.ファイルを作る。 例えば、 #!bin/sh cd tmp このとき、ディレクトリはどこでもいいのでしょうか? 2.権限を付ける。 chmod u+x filename 3.実行 ./filename 他に気をつけることはないでしょうか? 実行すると、 bash: ./filename: bad interpreter: そのようなファイルやディレクトリはありません となってしまって、どうしても実行できません。

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。