- 摘要:在一个Python项目中,要执行“/usr/bin/sftpaliyunzixun@xxx.com”命令连接远程FTP服务器,代码如下:_pass='assword:'_prompt='sftp>'_newKey="Areyousureyouwanttocontinueconnecting(yes/no)?"self._client=pexpect.spawn(command_connect_sftp)match=[self._pass,self._
-
在一个Python项目中,要执行“/usr/bin/sftp aliyunzixun@xxx.com”命令连接远程FTP服务器,代码如下:
可以看到,在发生连接FTP服务器的命令后,通过expect()检查可能的结果。但是在执行过程中得到如下异常:分析发现异常的原因是expect()语句超时,期望得到的结果没有得到,直到超时抛出异常。
这是因为期望得到的结果只包含两种情况,一种是提示将FTP服务器加入到known_hosts中,另一种是提示输入密码。但是,由于当前机器上不检查hosts的公钥(避免了第一种提示),使用提前生成的私钥(避免了第二章提示),因而还有第三种可能,就是使用用户名和私钥直接连接FTP成功,从而得到了“ftp> ”的结果。
修改代码如下,解决该异常:
pexpect.exceptions.TIMEOUT: Timeout exceeded.
最新推荐文章于 2021-01-21 21:56:33 发布