2015年6月13日土曜日

ftpを実行するバッチファイル

Windows環境で、FTPサーバーに自動でアップデートをするバッチを作成したので、メモメモ。


■.batファイルの中身
set ym=%date:~-10,4%%date:~-5,2%
set fn=ftp%ym%.log
ftp -s:ftp.txt>>%fn%
echo %date%_%time%>>%fn%
echo ------------------------>>%fn%

FTPを実施するだけなら、ftpコマンドを実行するだけで事足りる。
ftp

-sオプションでftpの時に必要な認証情報を別ファイルから取得。
-s:ファイル名
ftp -s:ftp.txt

実行のログを残しておきたいので、 ftp[年月].log というファイルの中に実行結果を出力。

現在の年月を取得して、変数に保存
set ym=%date:~-10,4%%date:~-5,2%
2015/06/01に実行したら変数の中身は、「 201506 」となる。


年月をファイル名に反映する為、年月を含んだファイル名を変数に保存
set fn=ftp%ym%.log
※batファイルでの変数の利用時は%で両端をくくる。
できるファイル名の例:ftp201506.log

ftpを実行時に、実行結果をファイル出力するようにする。
>>ファイル名 をつけることでファイル出力する。
ftp -s:ftp.txt>>%fn%

ファイルが既にある場合は追記となる。

ログに、実行時の日付と時間と区切りを追記。
echo %date%_%time%>>%fn%
echo ------------------------>>%fn%

合体すると、最初のコードになる。


■ftp.txtファイルの中身
open XXX.XXX.XXX.XXX
username
password
asc
prompt
put ファイルパス
disconnect
bye

XXX.XXX.XXX.XXXはFTPサーバのアドレス。

192.168.100.10のFTPサーバにアクセスして、
ユーザ認証を、ユーザ名:Yamada パスワード:1234 で認証、
c:\temp\data.dat のファイルをFTPしたいのであれば、

open 192.168.100.10
yamada
1234
asc
prompt
put c:\temp\data.dat
disconnect
bye

とする。

ftp.txtは、バッチファイルと同じフォルダに配置しておく。

バッチファイルをftp.batとしたのなら
ftp.bat と ftp.txt を同じフォルダに保存して、
Windowsのタスクスケジューラーで定期的に実行するように設定する。

別の処理で、必要なデータをc:\temp\data.datとして出力する処理をしていたので、
それを出力されたらFTPサーバに順次あげておくという処理を実施した。


■FTPコマンドリファレンス http://www.syscom.ne.jp/ftp_ref.htm


外部FTPサーバと、sftp環境を作って、インターネット経由でログを集める
いつか、処理を作ってもよいかなと考えました。

Windowsファイヤウォールの開放や、
ネット接続しているルータやファイヤウォールの通信許可、
など、他の考慮も必要ですね。

忘れないようにメモメモ。

0 件のコメント:

コメントを投稿