首页 > 解决方案 > Windows ftp 客户端中的“500 端口命令无效”错误

问题描述

我创建了一个脚本来使用 VBA 从 FTP 服务器下载文件来触发脚本。我可以连接到服务器并导航到正确的目录,但是当我得到文件时,我得到了消息:

500 端口命令无效

我已经尽可能多地调整了代码,但我对端口或 FTP 的了解还不够,无法知道我需要更改什么。

VBA代码:

Dim FTPcommand As String
Dim wsh As Object

FTPcommand = "ftp -n -s:" & Chr(34) & "C:\path\to\FTP_commands.txt" & Chr(34)
Set wsh = CreateObject("WScript.Shell")
wsh.Run FTPcommand, 5, True

剧本:

open ftp.blahblahbah.bl
user username password
lcd C:\Users\me\Documents\location
cd /specific location/
get "file.xlsx"

我希望文件能够下载,但会收到以下消息(在脚本登录并成功导航到文件路径后):

ftp> open ftp.address.com
Connected to ftp.address.com
220 Welcome to address.com
ftp> user USERNAME PASSWORD
---> USER USERNAME
331 User USERNAME, password please
---> PASS PASSWORD
230 Password Ok, User logged在
ftp lcd C:\Users\joe\Documents
本地目录现在 C:\Users\joe\Documents。
ftp> cd /location/
--->CWD /location/
250 Change directory ok
ftp get "file.xlsx"
---> PORT 192.168.1.121.242.113
500 Port command invalid
RETR file.xlsx
425 无法打开数据连接

标签: vbawindowsdownloadftp

解决方案


---> PORT 192.168.1.121.242.113
500 端口命令无效

看起来ftp正在向另一个网络中的 FTP 服务器发送内部 IP 地址。服务器无法连接到该 IP 地址。我不认为,有办法解决它ftp。您网络的防火墙/NAT 可以通过在PORT命令中转换 IP 地址来解决它。


或者您需要使用其他支持 FTP 被动模式的 FTP 客户端。

您可以使用WinSCP FTP 客户端。有一个将 Windowsftp脚本转换为 WinSCP的指南。

以下 WinSCP 代码与您的代码等效:

Dim FTPcommand As String
Dim wsh As Object

FTPcommand = """C:\Path\To\winscp.com"" /ini=nul /script=""C:\Path\To\FTP_commands.txt"""
Set wsh = CreateObject("WScript.Shell")
wsh.Run FTPcommand, 5, True

剧本:

open ftp://username:password@ftp.blahblahbah.bl/
lcd C:\Users\me\Documents\location
cd /specific location/
get "file.xlsx"
exit

(我是WinSCP的作者)


推荐阅读