【发布时间】:2020-08-17 00:06:50
【问题描述】:
我正在使用 pexpect 将文件上传到 SFTP 服务器。对于第一次访问服务器,我收到消息
The authenticity of host..can't be established.Are you sure you want to continue connecting (yes/no)?
我希望用户与之交互并回答是/否。但是,当用户说是时,我希望关闭交互模式,然后从我的脚本中获取密码,而不是提示用户。这可以使用 pexpect 吗?
p = spawn('XXXXXXXX')
password = 'XXXXXXXXx'
out=p.expect(['(?i)password:', '(?i)Are you sure you want to continue connecting (yes/no)?']
if out == 1:
p.interact()
# Script should continue to send password and upload file
但这会进入交互模式并且不会返回到脚本
请。注意 - 我在终端中运行这个 python 脚本。
如果不希望,请提出不基于 paramiko、pysftp 的解决方案
【问题讨论】:
-
我想将文件上传到我的 SFTP 服务器。但是,我不允许使用 paramiko/pysftp。可以只使用纯python或pexpect
-
这是一个用户应该验证的要求。此外,添加到“known_hosts”对我有用,但如果其他人在他们的机器上运行这个脚本,他们最好验证
-
所有这些 pexpect 代码都在我的脚本中!
标签: python subprocess sftp pexpect