在控制台上输入响应时出现问题

时间:2013-02-27 19:32:45

标签: python-2.7

我使用Telnet函数连接到机器,使用Putty将一些文件推送到它,直到日期它工作正常。但是现在突然间,当我尝试使用subprocess.Popen()将一些文件推送到机器时,它已经开始抛出一个错误。 错误是:


结果:警告 - 潜在的安全隐患!

服务器的主机密钥与PuTTY的主密钥不匹配 缓存在注册表中。这意味着要么 服务器管理员已经更改了主机密钥,或者您 实际上连接到另一台假装的电脑 成为服务器。

更新缓存密钥? (y / n,返回取消连接)放弃连接。 连接丢失


我想在我的脚本中添加一个步骤,如果控制台有这样的东西,那么它在控制台上输入“是/否”。 我尝试过这件事来完成它:

如果'结果:警告 - 潜在的安全隐患!'在sys.argv中:

                raw_input("y\n")
                time.sleep(1)

但它无法正常工作..对此有任何帮助!!!

1 个答案:

答案 0 :(得分:2)

对于问题的第一部分,您应该查看注册表项HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys以删除主机密钥已更改的主机(请参阅https://superuser.com/questions/197489/where-does-putty-store-known-hosts-information-on-windows)。

对于第二部分,raw_input()用于从用户获取输入,而不是用于向子进程提交值。我不确定,但我认为PuTTY的pscp会从stdin得到它的y / n值,所以你可以使用子进程的Popen()总是传入一个“y”以防万一(参见Python - How do I pass a string into subprocess.Popen (using the stdin argument)? )或者您可以尝试传递pscp“-batch”参数,这听起来不应该阻止提示(参见http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter5.html#pscp-usage)。