■.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.txt を同じフォルダに保存して、
Windowsのタスクスケジューラーで定期的に実行するように設定する。
別の処理で、必要なデータをc:\temp\data.datとして出力する処理をしていたので、
それを出力されたらFTPサーバに順次あげておくという処理を実施した。
■FTPコマンドリファレンス http://www.syscom.ne.jp/ftp_ref.htm
外部FTPサーバと、sftp環境を作って、インターネット経由でログを集める
いつか、処理を作ってもよいかなと考えました。
Windowsファイヤウォールの開放や、
ネット接続しているルータやファイヤウォールの通信許可、
など、他の考慮も必要ですね。
忘れないようにメモメモ。
0 件のコメント:
コメントを投稿