Python中文
首页
教程
问答
标签
搜索
登录
注册
用regex解析Pysnmp
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我需要解析Pysnmp输出。我想从web浏览器运行脚本。所以代码如下:</p> <pre><code>#! /usr/bin/python # print "Content-Type: text/html\n\n" print '<html><head><meta content="text/html; charset=UTF-8" />' print '<title>Interface searcher</title><p>' import re from pysnmp.entity.rfc3413.oneliner import cmdgen cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd( cmdgen.CommunityData('blablablabla'), cmdgen.UdpTransportTarget(('x.x.x.x', 161)), 'iso.3.6.1.2.1.2.2.1.2', ) if errorIndication: print(errorIndication) else: if errorStatus: print('%s at %s' % ( errorStatus.prettyPrint(), errorIndex and varBindTable[-1][int(errorIndex)-1] or '?' ) ) else: for varBindTableRow in varBindTable: for name, val in varBindTableRow: for line in val: if re.search("(xe|ae)[^.]*$", line): print line print "</p></body></html>" </code></pre> <p>如果从web浏览器运行此脚本,则不会产生输出。你知道吗</p> <p>如果我将最后一个循环更改为:</p> <pre><code>else: for varBindTableRow in varBindTable: for name, val in varBindTableRow: print(val) </code></pre> <p>它在web浏览器上产生如下输出:</p> <pre><code>fxp0 lsi dsc lo0 tap gre ipip pime pimd mtun fxp0.0 lo0.0 em0 em0.0 lo0.16384 lo0.16385 em1 em1.0 cbp0 demux0 irb pip0 pp0 ae0 ae1 ae2 ae3 ae1.0 ae2.109 ae2.110 lsi.0 ae2.196 ae2.234 ae2.236 ae2.311 ae2.313 ae2.314 lsi.1 ae2.452 ae2.507 ae2.557 ae2.649 ae2.735 ae2.803 ae2.804 ae2.977 ae2.1097 ae2.1108 ae2.1194 ae2.1197 ae1 ae2.1306 ae2.1328 ae2.1435 ae2.1463 ae2 ae2.1503 ae2.1596 ae2.2020 ae2.2345 ae2.2465 ae2.32767 ae3.0 ae2.1801 ae2.1446 ae2.2420 ae2.2421 ae2.2422 lc-4/0/0 lc-4/0/0.32769 lc-4/1/0 lc-4/1/0.32769 lc-4/2/0 lc-4/2/0.32769 lc-4/3/0 lc-4/3/0.32769 pfh-4/0/0 pfh-4/0/0.16383 pfe-4/0/0 pfe-4/0/0.16383 pfe-4/1/0 pfe-4/1/0.16383 pfe-4/2/0 pfe-4/2/0.16383 pfe-4/3/0 pfe-4/3/0.16383 lc-5/0/0 lc-5/0/0.32769 lc-5/1/0 lc-5/1/0.32769 lc-5/2/0 lc-5/2/0.32769 lc-5/3/0 lc-5/3/0.32769 pfh-5/0/0 pfh-5/0/0.16383 pfe-5/0/0 pfe-5/0/0.16383 pfe-5/1/0 pfe-5/1/0.16383 pfe-5/2/0 pfe-5/2/0.16383 pfe-5/3/0 pfe-5/3/0.16383 xe-5/0/0 xe-5/0/1 xe-5/0/2 xe-5/0/3 lsi.1048838 xe-5/0/3.0 xe-5/1/0 xe-5/1/1 xe-5/1/2 xe-5/1/3 xe-5/2/0 xe-5/2/1 xe-5/2/2 xe-5/2/3 xe-5/3/0 xe-5/3/1 xe-5/3/2 xe-5/3/3 xe-5/3/3.0 xe-4/0/0 xe-4/0/1 xe-4/0/0.32767 xe-4/0/2 xe-4/0/3 lsi.1048839 xe-4/0/0.2465 lsi.1048840 xe-4/0/0.2422 xe-4/0/0.2421 xe-4/0/0.2420 xe-4/0/0.2345 xe-4/0/0.2020 xe-4/0/0.1801 xe-4/0/0.1596 xe-4/0/0.1503 xe-4/0/0.1463 xe-4/0/0.1446 xe-4/0/0.1435 xe-4/0/0.1328 xe-4/0/0.1306 xe-4/0/0.1293 xe-4/0/0.1197 xe-4/0/0.1194 xe-4/0/0.1108 xe-4/0/0 lsi.1048841 </code></pre> <p>但如果我在shell中运行脚本,它会逐行打印出来,如下所示:</p> <pre><code>xe-4/1/3.3219 xe-4/2/1.1304 xe-4/2/1.250 gr-5/0/0.11 ae2 ae2.3461 xe-4/0/0.3462 xe-4/0/0.3461 xe-4/0/1 xe-4/0/1.3461 xe-4/0/2.3462 xe-4/0/2.3461 xe-4/0/3.3462 xe-4/0/3.3461 xe-4/2/1.1514 xe-4/2/1.1634 </code></pre> <p>我想让我的脚本从我的设备上获取数据,该设备工作正常,但我想用regex解析输出,以便它在web浏览器上打印出所有没有点的接口,例如-<em>ae2、xe-4/0/0</em>,并逐行打印每个接口,如下所示:</p> <pre><code>ae2 xe-4/0/0 etc. </code></pre> <p>我查过我的正则表达式了regexr.com它符合我想要的线条。请看它的行动<a href="http://regexr.com/3agof" rel="nofollow">http://regexr.com/3agof</a> 任何意见都将不胜感激。你知道吗</p> <p>非常感谢</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<pre><code>if re.search("(xe|ae)[^.]*$", line): print line.split('.')[0] + "\n" </code></pre> <p>应该可以在浏览器中为您完成。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
10 回答
无法使用Django\u mssql\u后端迁移到外部hos
9 回答
无法使用Django&Python3.4连接到MySql
3 回答
无法使用Django+nginx上载媒体文件
1 回答
无法使用Django1.6导入名称模式
2 回答
无法使用Django1.7和mongodb登录管理站点
1 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
7 回答
无法使用Djangockedi验证CBV中的字段
8 回答
无法使用Djangocketditor上载图像(错误400)
4 回答
无法使用Djangocron进行函数调用
7 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
8 回答
无法使用Djangomssql provid
10 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
7 回答
无法使用Djangomssq迁移Django数据库
8 回答
无法使用Djangonox创建用户
7 回答
无法使用Djangopyodb从Django查询SQL Server
7 回答
无法使用Djangopython3ldap连接到ldap
5 回答
无法使用Djangoredis连接到redis
9 回答
无法使用Django中的FK创建新表
2 回答