输入键命令有时在预期中不起作用

Enter key command doesn't work sometimes in pexpect

我正在 运行 下面的 pexpect 脚本登录到 Avocent 控制台服务器以连接到网络设备。输入服务器密码后,需要按 'Enter key' 才能出现提示。为此,我尝试了 child.sendline()child.send('\n')child.sendcontrol ('m'),但其中 none 有效。 我试过 child.send('\r'),但它时断时续地工作。不确定是什么导致了这个问题。

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

这是我的代码片段:

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>'])

使用预期==4.7.0 Python 2.7.5 OS:RHEL v7

有人可以帮忙吗。

我检查了提出的问题,但这没有帮助: pexpect and sending an "Enter Key" issues

您可能只需要等待一两秒钟让 ssh 完成连接并将 tty 模式重置为 echo。尝试在发送 \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 ...