首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pxssh错误‘无法与原始提示同步’

pxssh错误‘无法与原始提示同步’
EN

Stack Overflow用户
提问于 2013-11-19 01:32:06
回答 2查看 4.4K关注 0票数 4

当我使用pxssh进入远程服务器运行unix命令(如uptime )时,我得到了下面的错误。

代码语言:javascript
复制
Traceback (most recent call last):

文件"./ssh_pxssh.py",第33行,在login_remote (主机名,用户名,密码)文件"./ssh_pxssh.py",第12行,在login_remote中,如果不是s.login(主机名,用户名,密码):文件登录时,第278行

代码语言:javascript
复制
**raise ExceptionPxssh ('could not synchronize with original prompt')

pexpect.pxssh.ExceptionPxssh:无法与原始提示同步**

第33行是我在main中调用此函数的位置。

我使用的函数如下:

代码语言:javascript
复制
def login_remote(hostname, username, password):
    s = pxssh.pxssh()
s.force_password = True
if not s.login(hostname, username, password, auto_prompt_reset=False):
    print("ssh to host :"+ host + " failed")
    print(str(s))
else:
    print("SSH to remote host " + hostname + " successfull")
    s.sendline('uptime')
    s.prompt()
    print(s.before)
    s.logout()

并不是每次运行脚本时都会出现错误。相反,它是间歇性的。在我运行脚本的10次中有7次是这样的。

EN

Stack Overflow用户

发布于 2014-04-15 19:07:31

当pxssh尝试在一个非常慢的连接上登录时,我也遇到了同样的问题。pexpect库显然被远程motd提示符欺骗了。

这个远程motd提示符包含一个未命名的-svr提示符,该提示符本身包含一个#字符。显然,pexpect将其视为提示符。从那时起,lib不再与ssh会话保持一致。

下面的解决方法对我有效:只需在/var/run/motd.dynamic (debian)或/var/run/motd (ubuntu)中删除# char即可。

另一种解决方案是要求ssh在登录时不提示motd。但这对我不起作用:我添加了以下内容: PrintMotd no in /etc/ssh/sshd_config =>不起作用

另一种解决方法:在主目录中创建一个文件:~目录下的.hushlogin

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20054030

复制
相关文章

相似问题

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