0

サーバーからローカル マシンにファイルを ftp するスクリプトをいくつか書きました。差分モードでは、スクリプトの動作が異なります。

対話的に実行すると、ftp は問題ありません。

ftp> mget *abc*.reviewed
200 Type set to A.
200 PORT command successful.
150 Opening ASCII mode data connection for xxx_abc_yyyymmdd.reviewed(506 bytes).
226 Transfer complete.
ftp: 506 bytes received in 0.00Seconds 506000.00Kbytes/sec.

Windowsタスクスケジューラでスケジュールした場合、次のみが表示されます:

ftp> mget *abc*.reviewed
200 Type set to A.

次のエラーがあると思われますが、ログはありません。何が間違っていたのでしょうか?

私のコードのサンプル:

call :Logic > E:\ftp_%yyyymmdd%.log 2>&1 
exit /b 0
:Logic
ftp -i -s:C:\App\XXX\bin\ftp_script.txt some.host.net 

出力をログ ファイルにしますが、エラー ストリームが正常に構成されているかどうかわかりません。エラーログが失われている可能性があります。

ftp_script.txt の内容:

username
password
lcd E:\YYY
cd /XXX/YYY/ZZZ
mget *abc*.reviewed
mget *bcd*.reviewed
mget *cde*.reviewed
bye

さらなるケーススタディ:

スクリプトは、毎日午後 8 時に実行されるようにスケジュールされていました。今日サーバーを確認したところ、目的のサーバーに必要なファイルが含まれていることがわかりました。最後に変更された属性は午後 6 時 54 分でした。したがって、ファイルは午後 8 時にそこにあるはずで、昨日のスケジュールでは ftp ではありませんでした。

最後に変更された属性は、それがコピーされた時間 (他のディレクトリから) または名前が変更された時間 (ファイルの名前を .csv から .reviewed に変更する必要があります) に等しいと想定しています。

午後 12 時 40 分に 1 回限りのタスクをスケジュールしてスクリプトを実行すると、ファイルはターゲット サーバーからローカル サーバーに正常に ftp されました。

本当に混乱します。

4

1 に答える 1

0

アクティブな FTP モードで接続を拒否するファイアウォールに問題がある可能性があります。PASV コマンド ( Windows ftp.exe を使用したQUOTE PASV ) を発行してパッシブ モードを設定し、これで問題が解決するかどうかを確認してください (2 つの異なるモードの詳細については、こちらを参照してください) )。
また、サーバーから詳細を取得できるようにデバッグを設定することをお勧めします (DEBUG コマンドを追加します)。
テキストを転送しない場合は、BINARY コマンドも忘れずに含めてください。

于 2012-05-16T04:23:19.603 に答える