首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pexpect登录:远程主机标识已更改

问pexpect登录:远程主机标识已更改
EN

Stack Overflow用户
提问于 2018-01-26 10:33:33
回答 1查看 1.2K关注 0票数 2

我已经用pexpect编写了一个脚本,我可以在其中使用ssh登录,但有时在某些服务器上我得到:

代码语言:javascript
复制
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.

还有剧本刹车。

我知道,可以使用以下方法传递此警告:

代码语言:javascript
复制
os.system('ssh-keygen -f "/home/alex/.ssh/known_hosts" -R %s' % (ip))

这是我的密码:

代码语言:javascript
复制
from pexpect import pxssh

try:
    s = pxssh.pxssh()
    s.login(ip, user, password)

如何让登录输出检查输出是否包含WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED,以便我可以使用上面的命令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-26 10:45:57

来自期望值文档

给予expect()的模式可能是正则表达式,也可能是正则表达式的列表。这允许您匹配多个可选响应。expect()方法返回匹配模式的索引。

所以,你可以这样做:

代码语言:javascript
复制
pattern_index = server.expect(["WARNING:", "Normal response"])

if pattern_index == 0:
    #handle the warning message
else:
    server.sendline(....)
    server.expect(....)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48459638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档