Linuxでftpサーバーにファイルをアップロードするシェルスクリプトの作り方

このQ&Aのポイント
  • Linuxで、あるftpサーバーにファイルをアップロードするシェルスクリプトの作り方を教えてください。
  • シェルスクリプトを使用して、指定のftpサーバーにファイルをアップロードする方法について教えてください。
  • Linuxの環境で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を使うのだと思ったのですが、間違ってますでしょうか? よろしくお願いします。

  • ps5550
  • お礼率65% (129/196)

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

-uが使えるなら、こうでは: ftp -u ftp://user1:password1@ftp.hogehoge.jp/public_html/ test.html

ps5550
質問者

お礼

ありがとうございます。教えてもらった方法で、ftpできました。 URLとディレクトリを別々に書くのだと思い込んでいました。 助かります。

関連するQ&A

  • 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 ------------------------

  • シェルスクリプトを使ったSCPのエラー

    お世話になります。 シェルスクリプトを使い、サーバAからサーバBへファイルを定期的にコピーしようと、以下のシェルスクリプトを作りました。 test.sh ================= #!bin/sh HOST1=hostB.com (さくらVPSサーバ) USER1=hugahuga PASS1=hogehoge TARGET_DIR1=/home/user/data/  #サーバB(転送先)のディレクトリ BACKUP_DIR1=/home/user/data_new/*  #サーバA(転送元)のディレクトリ expect -c " set timeout 30 spawn scp ${BACKUP_DIR1} ${USER1}@${HOST1}:${TARGET_DIR1} expect { \" Are you sure you want to continue connecting (yes/no)? \" { send \"yes\r\" expect \"password:\" send \"${PASS1}\r\" } \"password:\" { send \"${PASS1}\r\" } } interact " ================= sh test.sh すると、以下のようなエラーが出ます。。 /home/user/data_new/*: No such file or directory そのまんまだとは思うのですが、ファイルもディレクトリもありますし、上記スクリプトのSCPコマンド部分をコピペして、シェル上で実行すると普通にうまくいきます。 サーバAもBもUbuntu12.04です。 一体何が原因なのでしょうか・・

  • shスクリプトでftp接続してファイル転送したい

    テキストファイルの1行の文字列を読込んで ftpで、文字列と同名のファイルを別サーバに転送する shスクリプトを作成したいと思っています。 テキストファイルから読込んだ文字列を変数に格納して ftp接続後、putで変数を指定すると 『変数名のファイルがありません』 というエラーがでます。 エラーメッセージから、変数が変数として扱われていない。 ファイル名そのものとして扱われていると思います。 テキストファイルから読込んだ文字列をftpで使用するには どうしたらよいでしょうか? また、何か代替案はあるのでしょうか? 簡略化したshスクリプトの内容は以下の通りです。 ------------------------------------ #!/bin/sh read filename <./test.txt ftp -n host_name <<"EOD" user user_name password passive binary cd /export/test put filename bye EOD -----------------------------------

  • 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でファイルをアップロード

    Xサーバーに登録しているドメインに、 FTPでファイルをアップロードして、URLにアクセスするとダウンロードできるようにしたいです。 FTPに接続して、直でテキストと画像を入れました。 (public_htmlの外) URLにアクセスしても、ページが見つかりません。のページになります。 public_htmlフォルダの中に、テキスト・画像を入れて、 URLにアクセスしても同じでした。 FTPでアップロードして、URLからダウンロードできるようにするには、 どのようにやればできるでしょうか? よろしくお願いいたします。

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

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

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • シェルスクリプトでファイル削除したい

    シェルスクリプト初心者です 今回、Linuxサーバ側にある複数のファイルを削除する 必要が出てきました このため、シェルスクリプトを書いて複数(2000程度) のファイルを削除しようとして試験をしています 試験のLinuxサーバ側の/root の中にfile1,file2・・・ 等々を置いています そこに次のようなスクリプトを記載して ファイルが置かれている場所と同じ/rootに置いて実行させるのですが ************** スクリプト ******** #!/bin/sh echo "start" # # rm F1010002.JPG rm F1010003.JPG rm F1010004.JPG echo "end" ****************************** 下記のようなエラーが出ます ****************************************** start rm: cannot lstat `F1010002.JPG\r': そのようなファイルやディレクトリはありません rm: cannot lstat `F1010003.JPG\r': そのようなファイルやディレクトリはありません rm: cannot lstat `F1010004.JPG\r': そのようなファイルやディレクトリはありません end ****************************************** サーバ側にSSHで入って、 # rm F1010002.JPG とひとつひとつ打鍵していくとファイルは削除されます スクリプトの間違い等あるのでしょうか 教えていただければ幸いです なお、ファイル数2000件程度のスクリプトを記載する方法は 別のソフトを利用して作成できるので・・・その件はいいのですが・・・

  • linuxシェルスクリプトにつきまして

    linuxシェルスクリプトにつきまして 下記のシェルスクリプトがあります。 このうちの、 $num `expr 500 + $num` $num $num の部分がわからず、解説いただきたく、お手数をお掛けしますが、何卒よろしくお願いいたします。 #!/bin/sh num=1 while [ $num -le 100 ]; do printf "user%03d,%d,500,User %03d,/home/user%03d,/bin/bash\n" \ $num `expr 500 + $num` $num $num num=`expr $num + 1` done

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

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