我怀疑远端终端设备正在做些什么来混淆客户端的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多行以:
结尾out [<filename>]
- Re-direct debugging output to file if specified, otherwise stdout
Xcvr#
从上面的代码片段:
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)
期望调用立即返回,因为它发现它的模式没有问题。但是,当我查看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缓冲中的某个地方被吞噬了。我想知道这个远端终端是否会以某种方式搞砸了,但我不知道要验证它。
感谢任何帮助。