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命令,然后简单地读取这些文件的输出,似乎可以完成一些您想要的操作。