pexpect:.before属性中丢失的行

2024-06-01 14:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我怀疑远端终端设备正在做一些事情来混淆客户端的pexpect,但我需要一些关于如何确认这一点的建议。在

问题是: 以下是我手动运行命令时终端窗口中的一个片段:

Xcvr# mdioFpgaXcvrRd bic1 0x806C 1
FPGA MDIO CFP read command: 
0x0001
Xcvr# 
Commands Supported: 
 <>-mandatory values []-optional |-or 
exit|quit 
   - exits/quits the CLI session 
fpgaRdReg <offset> <count>

多余的帮助输出继续进行约60行,结尾为:

^{pr2}$

从上面的片段:

  • Xcvr#是命令提示符
  • mdioFpgaXcvrRd bic1 0x806C 1是 我手动输入的命令
  • 0x001是我想要的输出 用pexpect搜索
  • 其他一切都是多余的输出 远端

现在,我试着用pexpect实现自动化。代码如下:

ssh_handle.sendline('mdioFpgaXcvrRd bic%s 0x806C 1' % bic_id)
ssh_handle.expect('Xcvr\# ')
ver_x_match = re.search(r'(?is)command:.+?0x(\w+).*', ssh_handle.before)

expect调用会立即返回,因为它发现它的模式没有问题。但是,当我查看spawn对象的.before或.after或.buffer属性时,我发现找不到我要查找的0x001输出。缓冲区从该行后面的行开始,如下所示:

 --- BUFFER ---

 --------------
 --- BEFORE ---

Commands Supported: 
 <>-mandatory values []-optional |-or 
exit|quit 
   - exits/quits the CLI session 
fpgaRdReg <offset> <count> 

继续约60行,结尾为:

out [<filename>] 
   - Re-direct debugging output to file if specified, otherwise stdout 


 --------------
 --- AFTER ---
Xcvr# 
 --------------

最后,我要弄清楚的是命令行后面的前几行发生了什么。它们似乎在pexpect缓冲区的某个地方被吞噬了。我想知道远端终端是不是把pexpect搞砸了,但我不知道该怎么验证。在

感谢任何帮助。在


Tags: 命令终端手动sshcommandcommandspexpecthandle