我使用Telnet函数连接到机器,使用Putty将一些文件推送到它,直到日期它工作正常。但是现在突然间,当我尝试使用subprocess.Popen()将一些文件推送到机器时,它已经开始抛出一个错误。 错误是:
结果:警告 - 潜在的安全隐患!
服务器的主机密钥与PuTTY的主密钥不匹配 缓存在注册表中。这意味着要么 服务器管理员已经更改了主机密钥,或者您 实际上连接到另一台假装的电脑 成为服务器。
更新缓存密钥? (y / n,返回取消连接)放弃连接。 连接丢失
我想在我的脚本中添加一个步骤,如果控制台有这样的东西,那么它在控制台上输入“是/否”。 我尝试过这件事来完成它:
如果'结果:警告 - 潜在的安全隐患!'在sys.argv中:
raw_input("y\n")
time.sleep(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)。