• ベストアンサー

FTPでのファイルPUT

あるサーバに毎日吐かれている log.YYMMDDといったファイルがあり、 それを別のFTPサーバにPUTするシェルを作りたいのですが ************ CDATE=`date "+%y%m%d"` FILENAME=log.${CDATE} >ftp >open 192.168.XXX.XXX >user xxxx xxxx >get $FILENAME >disconnect FTPの部分は実際にはテキストにします。 上記のように入力すると$FILENAMEなんてありませんという エラーになってしまいます。 FTPに入っても有効にはできないのでしょうか?

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

  • ベストアンサー
  • vaio09
  • ベストアンサー率37% (756/2018)
回答No.1

>ftp >open 192.168.XXX.XXX >user xxxx xxxx >get $FILENAME >disconnect この「>」で現されている処理系は何を現していますか? FTPとかSSHとかは、(パスワードが設定されていなければ別ですが)対話型の処理系となるはずですよね。 なので、単純なスクリプトでは実現できないでしょう。 私はexpect関数を使って実現することが多いのです。 Manpage of EXPECT http://www.linux.or.jp/JM/html/expect/man1/expect.1.html このQ&Aも見てください。 shスクリプトでftp接続してファイル転送したい http://oshiete1.goo.ne.jp/kotaeru.php3?q=1467002

nana_poco
質問者

お礼

ご丁寧にありがとうございました。 うまくいきました。

その他の回答 (1)

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

FTP クライアントの実装にもよりますが、FTP を非対話で実行するには、まず -n オプションを指定する必要があります。 CDATE=`date "+%y%m%d"` FILENAME=log.${CDATE} ftp -n <<EOF open 192.168.XXX.XXX user xxxx xxxx get $FILENAME bye EOF こんな感じです。

nana_poco
質問者

お礼

ありがとうございました。

関連するQ&A