vba - 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 无法打开数据连接
解决方案
---> 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的作者)
推荐阅读
- java - 在 android studio for Interstitialads 中运行 admob 广告的问题
- python - 如何在matplotlib中的散点周围叠加矩阵值?
- requirejs - Aurelia throws 出口未定义
- android - Camera2 API 是否有可能提供风景捕捉选项
- neo4j.rb - 我们如何在 neo4j.rb 中传递关系属性的参数?
- npm - 构建因语法错误而失败 - 微匹配
- python - 通过互相关确定两个信号之间的相似性不起作用
- java - 如何使用 Java 下载/上传 Azure B2C TrustFrameworkPolicy
- c++ - 计算消息从服务器到达的时间(mqtt)
- sql - 我想用 select 从其他表中更新表中的日期,但没有工作