1
child = pexpect.spawn('ftp XX.XXX.73.64')
child.logfile = sys.stdout
child.expect ('Name .*:')
child.sendline('admin')
child.expect('Password .*:')
child.sendline('XXXXX')

输出:连接到 XX.XXX.73.64。220 (vsFTPd 2.0.7) 名称 (XX.XXX.73.64): admin admin 331 请指定密码。密码:XXXXX

我正在尝试自动将 FTP 传送到交换机,但我的“admin”发送线命令似乎发送了两次“admin”。因此,我的用户名不正确。任何想法如何解决这一问题?

4

1 回答 1

0

如果没有更多信息,调试代码将非常困难。显然sendline不应该两次发送该行,所以出了点问题……但是您没有给我们一个可重现的测试用例,或者这四行之外的任何信息。

但实际上,如果您一开始不尝试使用,事情会变得简单得多pexpect。如果您确实需要编写一个不是为它设计的 CLI 程序,这pexpect是一个不错的选择。但是,如果你有一个 API(或一个可编写脚本的应用程序等),它总是会变得更容易。Python 包含电池是有原因的,其中一个电池是ftplib

ftp = ftplib.FTP('XX.XXX.73.64', 'admin', 'XXXXX')

如果你需要做任何比平常更花哨的事情,你可以使connectandlogin调用显式而不是让构造函数为你做这件事……但在这种情况下,你不需要,所以它实际上是单行的。

如何在 Python 中使用 FTP看起来是一个不错的教程。

于 2013-06-13T00:48:09.937 回答