2012-05-16 93 views
0

我寫了一些腳本,從服務器到本地機器的ftp文件。腳本在差異模式下具有不同的行爲。我的代碼被破壞了嗎?在windows下的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 PM。所以文件應該在晚上8點,並且它們在昨天的日程安排中不是ftp。

我假設上次修改的屬性等於它被複制(從其他目錄)或重命名(該文件應該從.csv重命名爲.reviewed)的時間。

我在12:40 pm安排了一次性關閉任務來運行腳本,並且這些文件已成功從目標服務器ftp到本地服務器。

這實在令人困惑。

回答

0

這可能是與防火牆拒絕主動FTP模式的連接有問題,你可以嘗試設置被動模式發出PASV命令(QUOTE PASV與Windows Ftp.exe的),看看是否能解決此問題(詳細資料關於兩種不同的模式here)。
我還建議您設置調試,以便從服務器獲取詳細信息(添加DEBUG命令)。
如果您沒有傳輸文本,請記得也包含BINARY命令。

+0

它沒有PASV也沒有被動指令。 – lamwaiman1988

+0

你可以嘗試** QUOTE PASV **如果是windows ftp.exe – eddo

+0

你是否嘗試發佈DEBUG並將輸出重定向到文本文件以驗證會話的細節是什麼?它可能有助於診斷。 – eddo

相關問題