battp.exe : バッチ処理専用のftp/httpクライアント

------------------------ 2008/05/08 13:00
利用者の方からの御要望に基づき、FTPPUT時にCWD( Change Work Directory)しないオプションを追加。
1.21βとして置いておきますが、積極的理由が無いのなら正式公開版をお使い下さい。

------------------------ 2006/09/12 09:00
Vectorで正式公開。プログラムは1.2βと変わっていません。マニュアルだけhtmlで整形。

------------------------ 2006/05/24 13:03

battp.exe Ver1.2β

Ver1.2βに更新した。

HTTP PUT と HTTP POST をサポート…とはいっても暫定なので、仕様とコードに迷いが見られる(笑)

------------------------ 2006/03/24 14:03
・Windows2000やXPのコマンドライン用のプログラム(DOS窓で動く)
・エラーが起きたらERRORLEVELを返す(そうでないとバッチファイル中でエラー分岐できない)
・スクリプトとかで動作指定しないで、引数かファイルでパラメータを与えられる

そういうソフトはないものかと探してみたら、これが意外と見当たらない。まあ探し方が悪いのだろうが、アレコレ探しまくるくらいなら作っちゃった方が早いか、ということで手をつけてみた。

まあ、Windows付属のftpクライアントの簡易版ってとこだ。例によって需要は無かろうが、気が向いたらVectorに正式登録するかも。





======================================================================
battp
batch mode ftp/http
copyright(c) SIGNAL9, 2006,2008
All Rights Reserved.
Ver 1.21
======================================================================
■これは何?
バッチファイルでの利用を想定したFTP, HTTP クライアントソフトです。

ftpは、古いプロトコルとはいえまだまだ現役です。

作者も様々な局面で利用しますが、意外と見当たらないのは、「いつも
同じファイルを繰り返しGETしたりPUTしたりする」ようなものでした。

で、それがコレです。

「Windows付属のftpコマンドでいいじゃん?」

確かにそうなのですが、アレだと、いちいちスクリプトファイルにして…
とかってメンドくさくないですか? 特に通信エラー起こしたときの
判定方法とか。
また、よくあるGUI系のプログラムだとスケジュール 起動したい時とか
けっこう面倒だと思いません?

思わない…という人には無用のシロモノですので、さようなら(笑)

もともと、あるシステムの一部として、サーバで生成したファイルを、
どんどんクライアントPCに取り込 むという処理の為に作ったコマンド
プログラムです。

・INIファイルの設定に従って、ファイルをGET/PUTします。
逆に言うとGET/PUTしかできません。

・ワイルドカード指定による複数ファイルの転送が可能です。
*ディレクトリの転送はできません。

・送信終了後に元ファイル(GETのときはサーバファイル、PUTのときは
クライアントファイル)を自動的に削除できます。

Ver1.2 から HTTP GET ・ PUT ・ POST を追加しました。

・HTTP GETは拙作の httpget.exe 相当です。ただし、アレと違ってwininet
 は使用しておりません。

・HTTP PUT は 書き込み権のある HTTP 1.1 サーバ相手にしか使えません。

・HTTP POSTはファイル1個 だけを受信するCGIプログラム相手にしか使え
 ません。

■動作環境
本ソフトは以下の環境で開発・動作確認を行いました。
この為、動作環境もこれに準じます。

*Microsoft (R) 日本語WindowsXP Pro (SP2)

サーバ側は IIS5.0 でしか検証しておりません。
特にhttp系は、テストが不十分です。
PUT / POST の使用に当たっては十分な検証をお願いします(^^;)。

■インストール
コマンドライン(いわゆるDOS窓)で動かすプログラムですので、適当なディ
レクトリにbattp.exeをコピーしてください。サーチパスの通ったディレク
トリだと便利です。アンインストールする場合は、battp.exeを削除してくだ
さい。

■実行

コマンドプロンプトからbattp.exeを、動作を指定するINIファイルを指定
して、実行します。

INIファイル名が省略された場合、battp.exeと同じディレクトリにある、
battp.iniを読み込みます。
どちらの方法でもINIファイルが読み込めない場合にはエラーにします。

■INIファイルの書き方

先頭に[]で括った通信グループの名前を書き、そこから以下のような
項目で通信条件を記述します。
具体的な書き方は添付のサンプルINIファイルをご覧下さい。

******** 共通パラメータ

Mode 動作モード。FTPGET・FTPPUT・HTTPGET・HTTPPUT・HTTPPOSTFILE
のいずれか。デフォルトはFTPGET。

FTPGET : FTP の GET を行う。

FTPPUT : FTP の PUT を行う。

HTTPGET : HTTP の GET を行う。

HTTPPUT : HTTP の PUT を行う。

HTTPPOSTFILE : multipart/form-data で指定したファイルのスト
リームを送信する。受信用のCGIプログラムが必要。

Target 通信先。FTPの場合はサーバ名(かIPアドレス)。HTTPの場合はURL。

Timeout TCP/IPタイムアウト。ミリ秒(1000分の1秒)であることに注意
(秒と勘違いすると、トンデモなく短い時間で接続が切れるこ
とになります)。デフォルトは60000(60秒)

ProxyHost プロクシの名前(かIPアドレス)
ProxyPort プロクシのポート(デフォルト:FTPの場合は21、HTTPは80)

DeleteMode 元ファイルを削除するか(TRUE/FALSE)。
デフォルトはFALSE。
TouchDateMode GET時に日付を元ファイルにあわせるか(TRUE/FALSE)
デフォルトはTRUE。PUT時はこの項目は使用できません。

RemotePath リモートのファイルパス。FTPGET時はファイル名のワイル
ドカード使用可能(ディレクトリのワイルドカードは不可)
FTPPUTの時のみ # を指定すると接続した時のディレクトリ
をそのまま使う(=CWDコマンドを発行しない)
LocalPath ローカルのファイルパス。FTPPUT時にはファイル名のワイ
ルドカード使用可能(ディレクトリのワイルドカードは不可)

UserName Targetのユーザ名。 基本認証のみ。

Password Targetのパスワード。基本認証のみ。

TargetPort 通信ポート。FTPの場合デフォルトは21、HTTPは80

******** FTP専用パラメータ

ProxyMode FTPのプロクシの場合の認証方式。(0~8のいずれか)
0 : Target USER→PASS→ACCT
1 : Proxy認証→SITE→Target USER→PASS→ACCT
2 : Proxy認証→USER @→PASS→ACCT
3 : Proxy認証→Target USER→PASS→ACCT
4 : OPEN →Target USER→PASS→ACCT
5 : USER @→PASS→ACCT
6 : USER @→Target USER→PASS→ACCT
7 : USER @ @
Target USER→PASS→ACCT
8 : USER @@
PASS @→ACCT

FtpBinaryMode FTPでバイナリモードを使うか(TRUE/FALSE)。デフォ
ルトはTRUE。
FtpPassiveMode FTPでPASVモードを使うか(TRUE/FALSE)。デフォルト
はTRUE。

******** HTTP専用パラメータ
HttpSaveHeader HTTPのヘッダー情報をセーブするか(TRUE/FALSE)。
デフォルトはFALSE。
TRUEの場合、送信ファイルと同じディレクトリに、拡張子
'.TXT'を付加してHTTPのリザルトを格納します。

HttpProtocol HTTPのプロトコルバージョン。1.0 か 1.1 を指定。
デフォルトは1.1。

HttpKeepAlive HTTP 1.1 のKeepAliveを使うか(TRUE/FALSE)。
デフォルトはFALSE。

HttpNoCache GETのとき、クライアントからキャッシュ不可ヘッダを
付与するか(TRUE/FALSE)。デフォルトはTRUE(付与する)。
尚、HttpProtocolが1.0の場合は Pragma: no-cache を、
1.1の場合は Cache-Control: no-cash を付与してリ
クエストする。
PUT/POSTでは無視します。

HTTPFieldName HTTPPOSTFILE のとき、本体エレメントのフィールド名
を指定します。省略時は POSTFILE 。
ようするに、CGI側で「ファイル名」と見なすフィールド;
<INPUT TYPE=file NAME="file1"> の、file1 のこと。

■動き方
[]で括った通信グループの名前ごとに、INIファイルの上から下へ順番に実
行します。
また、1ファイルごとに転送します。ある種のFTP/HTTPクライアントのよ
うに、コネクションを複数使って複数のファイルをいっぺんにやり取りする
ことはしません。

■著作権・使用・配布上の条件
本ドキュメントとそれに付随する一切のドキュメント及び実行プログラム
(以下本ソフトウェアと略す)の著作権は、作者である SIGNAL9(以下作
者と略す)が保有します。

本ソフトウェアの使用により発生した、いかなる損害に対しても作者は責
任を負いません。

本ソフトウェアの改良・サポートの義務を作者は負いません。

本ソフトウェアはベータテスト版であり、配布・転載は行わないで下さい。

■履歴
2006/03/03 Ver 1.0.1β
2006/05/23 Ver 1.2.0β HTTP PUT , POSTFILE 追加
2008/05/08 Ver 1.2.1β FTPPUT時にRemotePathでCWD無視文字を設定

[PR]
by SIGNAL-9 | 2006-03-24 14:03 | 拙作ソフトウェア
<< ldapquery.exe: ... ふたりの永田ぼっちゃんへ。 >>