查看服务端配置:https://www.cnblogs.com/dpf-10/p/9175409.html

查看内容示例:

D:\python>snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.5000
UCD-SNMP-MIB::ucdavis.5000.1. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.2.1.2.10.103.101.116.119.105.110.105.110.102. = STRING: "C:/test/test.ba
UCD-SNMP-MIB::ucdavis.5000.2.1.3.10.103.101.116.119.105.110.105.110.102. = ""
UCD-SNMP-MIB::ucdavis.5000.2.1.4.10.103.101.116.119.105.110.105.110.102. = ""
UCD-SNMP-MIB::ucdavis.5000.2.1.5.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.2.1.6.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.2.1.7.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.2.1.20.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.2.1.21.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.3.1.1.10.103.101.116.119.105.110.105.110.102.111 = STRING: "test123456"
UCD-SNMP-MIB::ucdavis.5000.3.1.2.10.103.101.116.119.105.110.105.110.102. = STRING: "test123456"
UCD-SNMP-MIB::ucdavis.5000.3.1.3.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.3.1.4.10.103.101.116.119.105.110.105.110.102. = INTEGER:
UCD-SNMP-MIB::ucdavis.5000.4.1.2.10.103.101.116.119.105.110.105.110.102.111.1 = STRING: "test123456"

根据回显内容,修改oid,在原OID后添加上方标红ID,重新获取内容:

D:\python>snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.5000.3.1.1.10.103.101.116.119.105.110.105.110.102.111
UCD-SNMP-MIB::ucdavis.5000.3.1.1.10.103.101.116.119.105.110.105.110.102. = STRING: "test123456" D:\python>

直接获取到所需内容行,接下来就是解析改行内容,再此之前,发现如果获取内容包含中文时,回显内容为“HEX-STRING:”,示例:

D:\python>snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.5000.3.1.1.10.103.101.116.119.105.110.105.110.102.111
UCD-SNMP-MIB::ucdavis.5000.3.1.1.10.103.101.116.119.105.110.105.110.102. = Hex-STRING: E6 B5 8B E8 AF D:\python>

所以,我们需要对回显结果进行判断后解析,python脚本为:

# coding=utf-8
import re
import os,sys
import time
import platform if 'Windows' == platform.system():
hosts = ['127.0.0.1']
else:
# 在虚拟机运行时则查看本地
hosts = ['127.0.0.1'] def snmpWalk(host, oid):
result = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read()
return result #snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.5000
#处理回显结果system
def getSystem(host):
system = snmpWalk(host, '.1.3.6.1.4.1.2021.5000.3.1.2.10.103.101.116.119.105.110.105.110.102.111')
if system.find('Hex-STRING:') > 0:
system = "".join(system.split('Hex-STRING:')[1:])
system = "".join(system.split('\n'))
system = "".join(system.split(' '))
system = system.decode("hex") else:
system = "".join(system.split('STRING: \"')[1:])
system = system[0:len(system)-2]
return system def main():
for host in hosts: print('=' * 10 + host + '=' * 10)
print(u"测试信息")
system = getSystem(host)
print system
my_file = 'C:/test/snmpTestinfo'
print ("信息存储到文件: %s"%(my_file)).decode('utf-8').encode('gbk')
if os.path.exists(my_file):
os.remove(my_file)
f = open(my_file, 'a+')
f.write(str(system))
f.close() if __name__ == '__main__':
main()

查看存储文件内容,支持各类文件。

python解析处理snmp回显----snmp的更多相关文章

  1. python接收字符并回显

    # -*- coding: utf-8 -* import serial import time # 打开串口 ser = serial.Serial("/dev/ttyAMA0" ...

  2. Python网络编程——编写一个简单的回显客户端/服务器应用

    今天将python中socket模块的基本API学习完后,照着书上的实例编写一个套接字服务器和客户端.采用python3.5版本,在注释中会标明python2和python3的不同之处. 1.代码 ( ...

  3. EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法

    带参提交一次查询,从服务器加载新数据.这是一个神奇的方法 $('#dg').datagrid('load',{ code: '01', name: 'name01' }); easyui修改操作的回显 ...

  4. Android 手机卫士--获取联系人信息并显示与回显

    前面的文章已经实现相关的布局,本文接着进行相关的功能实现 本文地址:http://www.cnblogs.com/wuyudong/p/5951794.html,转载请注明出处. 读取系统联系人 当点 ...

  5. 【Java EE 学习 73】【数据采集系统第五天】【参与调查】【导航处理】【答案回显】【保存答案】

    一.参与调查的流程 单击导航栏上的“参与调查”按钮->EntrySurveyAction做出相应,找到所有的Survey对象并转发到显示所有survey对象的页面上供用户选择->用户单击其 ...

  6. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  7. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

  8. SpringMVC第五篇【方法返回值、数据回显、idea下配置虚拟目录、文件上传】

    Controller方法返回值 Controller方法的返回值其实就几种类型,我们来总结一下-. void String ModelAndView redirect重定向 forward转发 数据回 ...

  9. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

随机推荐

  1. thymeleaf学习笔记:总结

    Thymeleaf定义:Thymeleaf is a modern server-side Java template engine for both web and standalone envir ...

  2. SQL学习(一.索引)

    数据库索引 作用: 提高查询速度 确保数据的唯一性 可以加速表和表之间的连接,实现表和表之间的参照完整性 使用分组和排序子句进行数据检索时,可以减少分组和排序的时间 全文检索字段进行搜素优化 分类: ...

  3. Linux 第六天

    1)locate 在文件资料库中查找文件(需要文件资料库中有,新建的文件查不到,需要手动更新,updatedb.查不到/tmp目录下的文件) 语法:locate 文件名 常用选项: -i:无视大小写查 ...

  4. MySQL缓存参数优化(转)

    MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在 ...

  5. suse下修改主机名

    export HOSTNAME=主机名 echo $HOSTNAME>/etc/HOSTNAME /etc/rc.d/boot.localnet stop /etc/rc.d/boot.loca ...

  6. 在Git中设置自己的姓名

    在Git中,自己的姓名与每一个commit提交绑定在一起.如果你在使用Azure DevOps Server中的Git Repo时,一定要注意commit中的提交者与服务器上的推送者,是两个概念. 在 ...

  7. MFC TabCtrl 控件修改标签尺寸

    注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...

  8. django-celery 创建多个broker队列 异步执行任务时指定队列

    一.这里不再详细述说 django 框架中如何使用celery, 重点放在如何实现创建多个队列, 并指定队列存放异步任务 笔者使用   django-celery==3.2.2 模块, 配置项及配置参 ...

  9. 一篇入门 -- Scala

    整体介绍 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. 联邦理工学院洛桑(EPFL)的Martin Odersky于2001 ...

  10. HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi + nginx)

    整个思路:HttpRunnerManager + python3.6 + Mysql5.7 + uwsgi + nginx 安装依赖环境,将源代码传到服务器,修改settings,增加uwsgi配置, ...