批量使用 ftp 傳輸

批量使用 ftp 傳輸

我嘗試使用批次檔從我的 ftp 伺服器取得檔案。發生的情況如下:

ftp> open files.000webhost.com 21
Connected to us-east-1.route-1000.000webhost.awex.io.
220 ProFTPD Server (000webhost.com) [::ffff:145.14.145.124]
500 OPTS UTF8 not understood
User (us-east-1.route-1000.000webhost.awex.io:(none)):
331 User ***** OK. Password required

230-Your bandwidth usage is restricted
230 OK. Current restricted directory is /
ftp> lcd C:\Users\micah\Desktop\MiniventureLauncher\Game
Local directory now C:\Users\micah\Desktop\MiniventureLauncher\Game.
ftp> cd public_html
250 OK. Current directory is /public_html
ftp> binary
200 TYPE is now 8-bit binary
ftp> recv miniventure.jar
200 PORT command successful
150-Connecting to port 50186
150 13336.1 kbytes to download

然後它就停止了。這是我的批次文件中的程式碼:

@Echo Off
Set _FTPServerName=files.000webhost.com 21
Set _UserName=*****
Set _Password=*****
Set _LocalFolder=C:\Users\micah\Desktop\MiniventureLauncher\Game
Set _RemoteFolder=public_html
Set _Filename=miniventure.jar
Set _ScriptFile=transfer
:: Create script
 >"%_ScriptFile%" Echo open %_FTPServerName%
>>"%_ScriptFile%" Echo %_UserName%
>>"%_ScriptFile%" Echo %_Password%
>>"%_ScriptFile%" Echo lcd %_LocalFolder%
>>"%_ScriptFile%" Echo cd %_RemoteFolder%
>>"%_ScriptFile%" Echo binary
>>"%_ScriptFile%" Echo recv %_Filename%
>>"%_ScriptFile%" Echo quit
:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"

它連接到伺服器,但不會下載檔案。

答案1

正如 @martin-prikryl 在評論中建議的那樣,這幾乎肯定是 Windows 防火牆問題。

雖然 Windowsftp可以在沒有特殊權限的情況下連接到遠端主機來下載文件,但傳入的遠端傳輸需要明確允許透過 Windows 防火牆。

允許傳入轉賬

如果 Windows 沒有 Windows 防火牆規則ftp,則當您使用該命令執行它時recv,系統應該會提示您自動將傳入規則新增至 Windows 防火牆。Private networks [...]預設應選取標記的方塊。按允許訪問按鈕將適當的規則新增至 Windows 防火牆。

前任。允許透過 Windows ftp.exe 下載

新增 Windows 防火牆規則 - 螢幕截圖

Public networks [...]除非您打算ftp在外出時使用 Windows,否則不需要選取標記的方塊。您需要成為管理員才能調整防火牆規則。

請注意,不幸的是,這將不允許當前下載繼續。您需要中止目前操作(通常使用Ctrl+ C)並重試。

不顯示防火牆彈窗

如果傳輸掛起並且沒有顯示防火牆規則彈出窗口,這很可能表示 Windows 的 Windows 防火牆中已經存在規則ftp(即使您最初按取消在上面的對話框中)。此外,這些規則很可能被設定為阻止任何傳入連接(由帶有斜線的圓形圖示表示)。

前任。 Windows ftp.exe 被 Windows 防火牆阻止

ftp.exe 被 Windows 防火牆阻止 - 螢幕截圖

要改變這一點:

  1. 打開控制台\系統與安全性\Windows 防火牆然後點擊標記的連結進階設定在左手側。

  2. 在裡面具有進階安全性的 Windows 防火牆對話框(如上所示),按一下入境規則連結左側並等待主窗格填滿。尋找標記的兩條規則文件傳輸程式。您可以點選姓名類別標題可根據需要按字母順序對項目進行排序。

  3. 對於每個規則,右鍵單擊它並選擇特性。在下面一般的選項卡,更改行動Block the connectionAllow the connection。按好的完成後出現在對話方塊底部。

    前任。更新 Windows ftp.exe 的 Windows 防火牆規則

    取消阻止 Windows ftp.exe 防火牆規則 - 螢幕截圖

  4. 如果操作正確,則帶有斜線的圓圈圖示應替換為綠色複選標記。

    前任。 Windows ftp.exe 的 Windows 防火牆規則 - 綠色複選標記

    Windows ftp.exe 防火牆規則綠色複選標記 - 螢幕截圖


創建自己的規則

如果您希望自己手動新增(建立)這些規則,請繼續步驟 1 和 2,除非按一下新規則...選擇後右側入境規則。

為 TCP 連線制定一項規則,為 UDP 連線制定一項規則(協定選項列在協定和連接埠標籤)。確保所有連接埠被允許。調整範圍選項卡屬性(通常設定為任意IP位址)和先進的標籤型材(通常只是Private)根據需要。

最後,根據計劃和服務選項卡,將 例如C:\windows\system32\ftp.exe作為程式路徑(如果有疑問,您可以where ftp從命令提示字元使用來顯示正確的路徑)。


相關內容