- ベストアンサー
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に入っても有効にはできないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>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
その他の回答 (1)
- entree
- ベストアンサー率55% (405/735)
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 こんな感じです。
お礼
ありがとうございました。
お礼
ご丁寧にありがとうございました。 うまくいきました。