输入键盘命令有时在 pexpect 中不起作用



我在 pexpect 脚本下运行,以登录到 Avocent 控制台服务器以连接到网络设备。输入服务器密码后,需要按"回车键"才能出现提示。为了实现这一目标,我尝试了child.sendline()child.send('n')child.sendcontrol ('m')但这些都没有奏效。 我尝试了child.send('r'),但它间歇性地工作。不确定是什么导致了问题。

我看到当脚本卡住等待 Enter 键时,如果我手动登录到控制台并通过键盘发送回车键,pexpect 脚本将继续。

这是我的代码片段:

child = pexpect.spawn('ssh local@x.x.x.x', timeout=120)
child.expect('Password:', timeout=60)
child.sendline(avocentpswd)
child.send('r')
print "enter key sent"
cli = child.expect(['cisco#' , 'cisco>'])

使用 pexpect==4.7.0 蟒蛇 2.7.5 操作系统: RHEL v7

有人可以帮忙吗?

我检查了提出的问题,但这没有帮助: 预期和发送"输入密钥"问题

您可能只需要等待一两秒钟,让 ssh 完成连接并将 tty 模式重置为回显。尝试在发送r之前添加一个import time;time.sleep(5),如果它有效,请使用类似(未测试(的循环:

for tries in range(5):
child.send('r')
cli = child.expect([pexpect.TIMEOUT, 'cisco#' , 'cisco>'], timeout=1)
if cli!=0: break
else: ... fail ...
... ok ...

相关内容

  • 没有找到相关文章

最新更新