使用 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 [...]除非您打算在外出时使用 Windows,否则您不需要选中标记的复选框ftp。您需要成为管理员才能调整防火墙规则。

请注意,不幸的是,这将不允许当前下载继续。您需要中止当前操作(通常使用Ctrl+ C)并重试。

不显示防火墙弹出窗口

如果传输挂起且未显示任何防火墙规则弹出窗口,这很可能意味着 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从命令提示符中使用来显示正确的路径)。


相关内容