-3

我正在使用 Telnet 功能连接到机器,使用 Putty 将一些文件推送到它,并且到目前为止它运行良好。但是现在突然之间,当我尝试使用 subprocess.Popen() 将一些文件推送到机器时,它开始向我抛出错误。错误是:


结果:警告 - 潜在的安全漏洞!

服务器的主机密钥与注册表中缓存的一个 PuTTY 不匹配。这意味着服务器管理员更改了主机密钥,或者您实际上连接到另一台冒充服务器的计算机。

更新缓存的密钥?(是/否,返回取消连接)连接被放弃。失去了连接


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

if '结果:警告 - 潜在的安全漏洞!' 在 sys.argv 中:

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

但它不起作用..对此有任何帮助!

4

1 回答 1

2

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

对于第二部分, raw_input() 用于从用户那里获取输入,而不是用于向子进程提交值。我不确定,但我认为 PuTTY 的 pscp 将从标准输入获取它的 y/n 值,因此您可以使用子进程的 Popen() 始终传入“y”以防万一(请参阅Python - 我如何将字符串传递给 subprocess.Popen (使用 stdin 参数)?)或者您可以尝试将“-batch”参数传递给 pscp,这听起来不应该阻止提示(参见http://the.earth.li/ 〜sgtatham/putty/0.62/htmldoc/Chapter5.html#pscp-usage)。

于 2013-02-27T20:30:14.090 回答