我们有一个旧系统,它使用内置的 Windows 命令行 ftp 客户端将文件上传到 ftp 服务器。它使用 -s 开关执行此操作,ftp 文件如下所示:
debug
open myftpsite.com 21
<username>
<password>
cd remote_folder
ascii
lcd "c:\myfolder"
prompt
put export.txt export.tx
rename export.tx export.txt
quit
99% 的时间里,这种方法都有效,但另外 1% 的时间里,这种方法却行不通。成功运行时,生成的日志文件包含来自服务器的响应消息,例如上述每个命令之后的“250 OK”。问题是,有时似乎无法连接,然后我们在日志文件中根本看不到任何消息(无论是来自服务器还是 ftp 客户端)。ftp 客户端似乎仍返回进程退出代码 0。
有人对此有什么建议吗:
从内置 Windows 命令行 ftp 客户端获得更好的日志记录?
AND\OR
强制其返回除 0 之外的进程退出代码以指示出现问题?
答案1
如果它响应命令但无法传输数据(上传、下载、目录列表),则可能是您需要启用“被动”模式。通常,FTP 要求服务器能够与客户端建立新的连接以进行实际数据传输。在当今的 NAT、防火墙等世界中,这很少奏效。而且即使支持它,它实际上也非常不安全(因为在新连接上不会再次进行身份验证)。因此,被动模式将这一责任反过来,让客户端与服务器建立第二个连接。
尝试在 Internet Explorer 的高级设置中进行设置(这会影响许多应用程序,而不仅仅是 IE),或者检查 FTP 客户端是否有被动模式开关。我现在正在使用 iPad,否则我会自己检查。