Python 为什么Pexpect代码不能获取我需要的数据?

Python 为什么Pexpect代码不能获取我需要的数据?,python,pexpect,Python,Pexpect,在我的路由器中,我使用命令过滤ae16单元200: jd@HK-MX-RE0# run show configuration | display set | match "ae16 unit 200" set interfaces ae16 unit 200 vlan-id 200 set interfaces ae16 unit 200 family inet addre

在我的路由器中,我使用命令过滤
ae16单元200

jd@HK-MX-RE0# run show configuration | display set | match "ae16 unit 200"                      
set interfaces ae16 unit 200 vlan-id 200                                        
set interfaces ae16 unit 200 family inet address 13.57.111.246/29              
set interfaces ae16 unit 200 family inet address 13.215.8.246/29               

{master}[edit]                                                                  
jd@HK-MX-RE0#  
我想使用
pexpect
打印

set interfaces ae16 unit 200 vlan-id 200                                        
set interfaces ae16 unit 200 family inet address 13.57.111.246/29              
set interfaces ae16 unit 200 family inet address 13.215.8.246/29               
这是我的预期代码:

        ...
        child = pexpect.spawn(cmd1)  # create the pexpect child 
        ...

        cmd2 = 'run show configuration | display set | match "ae16 unit 200"

        child.sendline(cmd1)
        child.expect('#')

        child.sendline(cmd2)


        expect_str = """jd@HK-MX-RE0# """

        child.expect(expect_str)
        exec_message += (cmd2 + '\n')

        exec_message += '\n'
        exec_message += 'query vlan as bellow:\n'
        exec_message += child.before.decode()
        print(exec_message)
只有印刷品:

query vlan as bellow:


{master}[edit]
所以没有得到内容

我还尝试:

expect_str = """\n\n{master}[edit]\njd@HK-MX-RE0# """
expect_str = """\r\n\r\n{master}[edit]\r\njd@HK-MX-RE0# """
expect_str = """\r\n{master}[edit]\r\njd@HK-MX-RE0# """
所有将获得超时异常:

"Timeout exceeded.\n
<pexpect.pty_spawn.spawn object at 0x11120b128>\n
command: /usr/bin/ssh\nargs: ['/usr/bin/ssh', 'root@13.193.240.45']\n
buffer (last 100 chars): b'address 13.215.8.246/29\\r\\n\\r\\n
{master}[edit]\\r\\n
jd@HK-MX-RE0# \\r\\n\\r\\n
{master}[edit]\\r\\n
jd@HK-MX-RE0# '\n
before (last 100 chars): b'address 13.215.8.246/29\\r\\n\\r\\n
{master}[edit]\\r\\n
jd@HK-MX-RE0# \\r\\n\\r\\n
{master}[edit]\\r\\n
jd@HK-MX-RE0# '\n
after: <class 'pexpect.exceptions.TIMEOUT'>\n
match: None\n
match_index: None\n
exitstatus: None\n
flag_eof: False\n
pid: 8560\nchild_fd: 13\n
closed: False\ntimeout: 30\n
delimiter: <class 'pexpect.exceptions.EOF'>\n
logfile: None\n
logfile_read: None\n
logfile_send: None\n
maxread: 2000\n
ignorecase: False\n
searchwindowsize: None\n
delaybeforesend: 0.05\n
delayafterclose: 0.1\n
delayafterterminate: 0.1\n
searcher: searcher_re:\n    
0: re.compile(b'\\n
{master}[edit]\\n
jd@HK-MX-RE0#')"
超出了超时时间。\n \n 命令:/usr/bin/ssh\nargs:['/usr/bin/ssh','root@13.193.240.45']\n 缓冲区(最后100个字符):b地址13.215.8.246/29\\r\\n\\r\\n {master}[编辑]\\r\\n jd@HK-MX-RE0#\\r\\n\\r\\n {master}[编辑]\\r\\n jd@HK-MX-RE0#'\n 前(最后100个字符):地址13.215.8.246/29\\r\\n\\r\\n {master}[编辑]\\r\\n jd@HK-MX-RE0#\\r\\n\\r\\n {master}[编辑]\\r\\n jd@HK-MX-RE0#'\n 之后:\n 匹配:无\n 匹配索引:无\n exitstatus:无\n 标志\u eof:False\n pid:8560\n齐鲁fd:13\n 关闭:错误\n超时:30\n 分隔符:\n 日志文件:无\n 日志文件\u读取:无\n 日志文件\u发送:无\n maxread:2000\n ignorecase:False\n SearchWindowsSize:无\n delaybeforesend:0.05\n delayafterclose:0.1\n DelayAfterminate:0.1\n 搜索者:搜索者\u re:\n 0:重新编译(b'\\n {master}[编辑]\\n jd@HK-MX-RE0#')”
为什么不将命令的输出转储到文件并打开文件内容
run show configuration | display set | match“ae16 unit 200”>list_of_stuff.txt
执行输出到文件的shell命令,然后简单地读取这些文件的输出,似乎可以完成一些您想要的操作。为什么不将命令的输出转储到文件并打开文件内容呢
run show configuration | display set | match“ae16 unit 200”>list_of_stuff.txt
执行输出到文件的shell命令,然后简单地读取这些文件的输出,似乎可以完成一些您想要的操作。