使用pywinauto确认PuTTY主机密钥提示

3
我试图用pywinauto自动化PuTTY界面,除了需要按下y以接受弹出窗口的主机密钥之外,一切都顺利。我使用PuTTY界面是因为它连接到交互式界面而不仅仅是普通的ssh。
这是我的代码。当我发送yEnter时,我想知道为什么它对弹出窗口没有影响:
def config_dp(hostname, cm_temp_ip, new_ip):
    first_connect(cm_temp_ip)
    app = Application ().Start (cmd_line=u'putty.exe admin@'+cm_temp_ip+' -pw BLAHBLAHJ')
    putty = app.PuTTY
    putty.type_keys("y")
    putty.wait('ready')
    time.sleep(3)
    putty.type_keys("2")
    putty.type_keys("{ENTER}")
    putty.type_keys("2")
    putty.type_keys("{ENTER}")
    putty.type_keys(hostname)
    putty.type_keys("{ENTER}")
    putty.type_keys("{ENTER}")
    time.sleep(3)
    putty.type_keys("U")
    putty.type_keys("3")
    putty.type_keys("{ENTER}")
    putty.type_keys("{ENTER}")
    putty.type_keys("2")
    putty.type_keys("{ENTER}")
    putty.type_keys(new_ip+"/24")
    putty.type_keys("{ENTER}")
    time.sleep(5)
    putty.close()
    first_connect(new_ip)
    reboot(new_ip)
    time.sleep(60)
    enable_root(new_ip)
1个回答

2

如果我使用paramiko通过ssh连接到设备并获取密钥,然后将其传递给putty执行,那么这实际上可能会起作用。 我仍然非常想知道为什么pywinauto对弹出窗口没有任何影响。 - mn0o7
不,您必须显式地传递硬编码/配置的主机密钥。通过 Paramiko 或任何其他方式自动检索它会否定验证的目的。它是作为防范中间人攻击的保护措施存在的。 - Martin Prikryl
这就是我建议你不要做的事情。 - Martin Prikryl
这是一个用于封闭的QA环境的自动部署。 - mn0o7
我仅使用paramiko获取主机密钥,然后将其用于连接putty。为什么不直接使用ssh/paramiko并在Linux操作系统级别上运行所有内容呢?因为某些东西只能从perl菜单中更改,这是一种交互式CLI菜单(据我所知需要GUI)。 - mn0o7
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接