ftpをタスクスケジュールに登録して、定期的にログファイルなんかをダウンロードするといったことはよくあるのですが、unixではftp.shなどのシェルを組むなどしてcrontabに登録します。
windowsでも同じようにバッチを組んでやってみたのですが、ログインのところでなんかうまくいかないため、試行錯誤した結果下記のようになりました。
<なんかうまくいかないバッチ>
01:>echo open ホスト名>cmd.ftp
02:>echo user ユーザ名 パスワード>>cmd.ftp
03:>echo get / put(ftpのコマンド)>>cmd.ftp
04:>echo close>>cmd.ftp
05:>echo bye>>cmd.ftp
06:>ftp -s:cmd.ftp
スクリーンショットは、hogeというホストにユーザ:moge / パスワード:mogeでログインしようとしているものです。(このアカウントは正しいものとして)1行目のopen時にユーザとパスワードを聞かれ、2行目でリダイレクトしてるユーザとパスワードを解決できずにLogin failedとなる。。。 うーんopenしたいだけなんスけど。
でも、よくみてみると
331 Password required for user moge moge
なんてかいてありますね。
どういうことかというと、「user moge moge」というアカウントのパスワードを聞いてきているわけです。
2行目の「user moge moge」っていうコマンド行をログインアカウントだと思って、このアカウントのパスワードを聞いてきているわけです。
ちがwwwwそれは「user アカウント パスワード」って言うコマンドを実行してほしいんですwwwでもわかってくれない。これが正しい挙動でもなんかやだなぁ。
ftpのopenコマンドのヘルプ見ても、アカウントとパスワードを聞かれるのを抑制できるようなオプションないみたいだし。
ので、以下のように変えてみた
<ちょっと納得いかないけどうまくいったバッチ>
01:>echo open ホスト名>cmd.ftp
02:>echo ユーザ名>>cmd.ftp
03:>echo パスワード>>cmd.ftp
04:>echo get / put(ftpのコマンド)>>cmd.ftp
05:>echo close>>cmd.ftp
06:>echo bye>>cmd.ftp
07:>ftp -s:cmd.ftp
入れて、出れた。スクリーンショットは正しいホスト、ユーザ、パスが与えてあるので消しています。
うーん。どうなのって思うけど、出来たから結果オーライです。
ちなみに、ftpのコマンドバッチ(cmd.ftp)をリダイレクトしているのは、
01:>ftp ホスト名
02:>ユーザ名
03:>パスワード
04:>ftpのコマンド get/put
05:>close
06:>bye
っていうバッチを組むと1行目で、実行の制御が1行目でFTPに移って、2行目以降は起動したバッチの制御上なので、正しく実行されないためです。
なんかバッチバカみたいになってきましたけどバッチのことばかり考えているわけじゃありません。
ほいでわ。



