pexpect:.before属性

时间:2017-05-30 21:23:54

标签: python pexpect

我怀疑远端终端设备正在做些什么来混淆客户端的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缓冲中的某个地方被吞噬了。我想知道这个远端终端是否会以某种方式搞砸了,但我不知道要验证它。

感谢任何帮助。

0 个答案:

没有答案