我正在使用一块硬件,我需要自动检索文件,其上有一个非常基本的ftp程序版本。这归结为我无法使用-s标志和带有ftp命令的文件运行ftp。但是,如果我从cmd以相同的顺序使用完全相同的命令(因此失去了我需要的自动化),我能够检索我需要的文件。我正在寻找可能存在的任何解决方案,因为我已经尝试了很多选项。
我已经尝试过的事情:
ftp -s:filename.txt;服务器响应 - 命令未实现
Matlab内置的ftp库;与ftp -s相同的问题
Python ftp库;同样的问题
从telnet运行ftp;无法连接
从c#中的cmd进程运行ftp;启动后无法将输入写入ftp程序(这里可能存在我缺失的原因,因为我之前从未使用过c#)
任何建议表示赞赏。我在Windows 7中工作,如果相关的话。
** filename.txt的内容**
open <192.168.100.220>
get Disk00
quit
**来自running -s命令的输出**
ftp -s:filename.txt
open 192.168.100.220
Connected to 192.168.100.220
220 Service Ready
User <192.168.100.220:>none>>:
331 User OK, Need Password
230 User Logged In
ftp> get Disk00
202 [2,16] Command Not Implemented
150 Opening Data Connection
此时进程刚挂起,我必须ctrl + c。发出的命令显然是&#34;未实施&#34;在ftp软件中,我正在使用的是原始PORT命令。
Image of cmd when running line by line
Disk00位于默认目录中。我非常确定我遇到的问题是关于我在这个硬件上解释的hacky版本ftp的内在问题,或者在这种情况下,错误解释了从批处理文件发送的命令I& #39; m使用。从批处理文件运行时,失败的PORT命令的输出表明它以某种方式错误地对命令进行了索引。来自Wireshark:
Request: PORT 192,168,100,100,230,70
Response: 202 [2,16] Command Not Implemented
这就是为什么我的原始问题更多的是为什么我可以为此实现一个解决方法,以避免此版本的ftp代码正在做的任何奇怪的行为。
**更新**
在文件中测试随机命令组合时我用-s标志传递给ftp,我在使用get命令之前通过调用PORT修复了我的问题...其中一个PORT命令仍然失败所以我和#39;我不确定它为什么会起作用,但我不会质疑它......