我们使用本地构建机器切换到 AWS 云。现在有一个批处理文件,应该通过ftp上传一个文件。这在本地运行良好,但在 EC2 AWS 机器上却不行。
C:\Programme\WinRAR\winrar a -afzip -IBCK -ep "Tool_%date:~-2%%date:~-7,2%%date:~-10,2%.zip" master
@echo Upload...
@echo open URL>ftp.txt
@echo USERNAME>>ftp.txt
@echo PASSWORD>>ftp.txt
@echo binary>>ftp.txt
@echo put TOOL_%date:~-2%%date:~-7,2%%date:~-10,2%.zip "/downloads/Tool%.zip">>ftp.txt
@echo quit>>ftp.txt
ftp -s:ftp.txt >out.txt
那行不通...我在安全组设置中打开了:入站和出站端口 20-21、1024-1048。它上传 0 字节的 zip 存档。
日志文件说:
ftp> open URL
Connection to URL was established.
220 FTP on server ready
200 UTF8 set to on
User (URL: (noone)):
331 Password required for USERNAME
230 user USERNAMElogged in
ftp> binary
200 type set to I
ftp> put Tool_180418.zip "/downloads/Tool_180418.zip"
200 PORT command successful
425 Unable to build data connection: The connection waiting time has expired
ftp> quit
221 goodbye.
最佳答案
Windows 命令行 ftp 客户端仅支持 FTP 主动模式。为了能够使用它,您必须在您的本地 Windows 防火墙上打开端口。 (可能还有 AWS 实例上的出站端口。)
请参阅我关于 network configuration for FTP active and passive connection modes 的文章.
您最好使用另一个支持 FTP 被动模式的 FTP 客户端,您似乎已经正确设置了所有内容。
例如,WinSCP scripting ,您可以使用如下批处理文件:
winscp.com /log=upload.log /command ^
"open ftp://username:password@ftp.example.com/" ^
"put TOOL_%%TIMESTAMP#ddmmyy%%.zip /downloads/*" ^
"exit"
甚至还有转换 Windows ftp.exe script to WinSCP script 的指南.
WinSCP 还有一个内置的 %TIMESTAMP% syntax ,上面的例子利用了什么。它比 %date% 更可靠,也更易于使用。
(我是 WinSCP 的作者)
关于windows - 将文件复制到 AWS EC2 Windows 服务器上的 FTP 服务器失败并显示 "Unable to build data connection: The connection waiting time has expired",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902744/