snmpwalk 指令获取设备 mib

snmpwalk -v 1 -c public ip .1 > ip.mibs

pysnmp 获取设备 mib

安装环境

pip3 install pysnmp
pip3 install pysnmp-mibs

代码(snmpwalk.py):

from pysnmp.entity.rfc3413.oneliner import cmdgen
import sys #debug模式,可以观察mib文件是如何寻找的
#from pysnmp import debug
#debug.setLogger(debug.Debug('mibbuild')) arg_len = len(sys.argv)
if arg_len == 2:
ip = sys.argv[1]
else:
print("Usage:\n python3 snmpwalk.py [ip]]")
sys.exit(0) cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData('public'),
cmdgen.UdpTransportTarget((ip, 161)),
cmdgen.MibVariable('IF-MIB', '').loadMibs(),
lexicographicMode=True, maxRows=100000,
ignoreNonIncreasingOid=True,
lookupNames=True, lookupValues=True
) if errorIndication:
print(errorIndication)
else:
if errorStatus:
print('%s at %s' % (
errorStatus.prettyPrint(),
errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
)
)
else:
with open('{0}.mib'.format(ip),'w') as f:
for varBindTableRow in varBindTable:
for name, val in varBindTableRow:
mib_text = '%s = %s' % (name.prettyPrint(), val.prettyPrint())
print(mib_text)
f.write(mib_text+'\n')

运行:

python3 snmpwalk.py 192.168.1.1

打包

使用pyinstaller打包后提示找不到IF-MIB.py

需要在snmpwalk.py同级目录下新建 snmpwalk.spec

# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_data_files
from PyInstaller.utils.hooks import collect_submodules block_cipher = None a = Analysis(['snmpwalk.py'],
pathex=['/usr/local/lib/python3.5/dist-packages/', '/home/brian/test/snmpwalk'],
binaries=[],
datas=[],
hiddenimports=collect_submodules('pysmi')+\
collect_submodules('pysnmp_mibs')+\
collect_submodules('pysnmp'),
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
x=Tree('/usr/local/lib/python3.5/dist-packages/pysnmp/smi/mibs',prefix='pysnmp/smi/mibs',excludes='.py')
y=Tree('/usr/local/lib/python3.5/dist-packages/pysmi',prefix='pysmi',excludes='.py')
z=Tree('/usr/local/lib/python3.5/dist-packages/pysnmp_mibs',prefix='pysnmp_mibs',excludes='.py') pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
x,y,z,
name='snmpwalk',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )

之后执行:

pyinstaller snmpwalk.spec

参考

[1]. 如何获取pysnmp以使用pysnmp-mib进行友好输出?

[2]. pysnmp.smi.error.MibNotFoundError

[3]. 无法让 pysnmp 与 pyinstaller 一起使用(Can't get pysnmp to work with pyinstaller)

pysnmp 获取设备 mib的更多相关文章

  1. 获取设备mac地址和md5加密

    SGMSettingConfig.h #import <Foundation/Foundation.h> @interface SGMSettingConfig : NSObject{ N ...

  2. iOS 获取设备信息,mac地址,IP地址,设备名称

    #import "DeviceInfoUtil.h" #import "GlobleData.h" #import "sys/utsname.h&qu ...

  3. iOS 获取设备唯一标示符的方法

    在开发中会遇到应用需要记录设备标示,即使应用卸载后再安装也可重新识别的情况,在这写一种实现方式--读取设备的UUID(Universally Unique Identifier)并通过KeyChain ...

  4. ios获取设备信息总结

    1.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name;       //获取设备所有者的名 ...

  5. 获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息

    在iOS7之前, 可以方便的使用 [[UIDevice currentDevice] uniqueIdentifier] 来获取设备的UDID,但是在iOS7之后这个方法不再适用. 你可以用[[UID ...

  6. 微信蓝牙设备开发教程之获取设备deviceid和二维码(3)

    文章转载地址  http://www.vxzsk.com/87.html  设备授权 调用 设备授权新接口 ,获取deviceid和二维码,然后利用获取到的deviceid更新设备属性(如mac地址, ...

  7. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  8. 获取设备的mac地址和IP地址(android6.0以上专用)

    /** * 获取设备HardwareAddress地址 * @return */public static String getMachineHardwareAddress(){ Enumeratio ...

  9. 微信 小程序 drawImage wx.canvasToTempFilePath wx.saveFile 获取设备宽高 尺寸问题

    以下问题测试环境为微信开发者0.10.102800,手机端iphone6,如有不对敬谢指出. 根据我的测试,context.drawImage,在开发者工具中并不能画出来,只有预览到手机中显示. wx ...

  10. 获取设备的mac地址可靠的方法

    参考自:http://www.open-open.com/lib/view/open1433406847322.html /** * 获取设备的mac地址 * * @param ac * @param ...

随机推荐

  1. cesium教程9-加载倾斜摄影并解决高度问题

    无人机航拍的倾斜摄影,用照片和视频处理生成三维模型,一般照片都带有坐标信息,所以一般都能定位的比较准确,但是经常会出现高度偏差,这个时候就需要特殊处理了. 今天航拍建模的效果如下: 这个建模没有裁剪, ...

  2. C 语言编程 — 函数

    目录 文章目录 目录 前文列表 函数 函数的声明 函数的定义 函数的形参与实参 值传递 引用传递 可变长形参列表 函数的调用 函数的指针 回调函数 递归函数 数的阶乘 斐波那契数列 构造函数(Cons ...

  3. Netflow/IPFIX 流量收集与分析

    目录 文章目录 目录 Netflow(网络数据流检测协议) IPFIX(网络流量监测) IPFIX 组网架构 IPFIX 应用场景 Usage-based Accounting(基于使用流量的计费) ...

  4. Excel功能学习

    字符串和单元格内容拼接函数CONCATENATE a@马踏星空:=CONCATENATE(D2,E2,F2)拼接指定单元格内字符串,无分隔符 a@马踏星空:=CONCATENATE(I4," ...

  5. 一个与 WSL2 建立远程的简单方法

    前言 众所周知,windows 会通过虚拟交换机给本机和 wsl2(Linux 子系统)分别分配 ip.于是本机重启或重启 wsl 服务的时候会重新分配 ip.之前所作的端口转发,监听之类的都会失效. ...

  6. Android 12(S) MultiMedia Learning(四)MediaPlayerService

    getMediaPlayerService方法获取到的是media.player服务 IMediaDeathNotifier::getMediaPlayerService() { // ...... ...

  7. no implicit conversion of nil into String

    一.Cocoapod 执行pod install命令时报错 [!] An error occurred while processing the post-install hook of the Po ...

  8. FLV 分析脚本

    一.需求 通过脚本,可以检查本地flv文件格式是否正确,可以打印每个Tag中的二进制内容 二.效果 可以看到VideoTag中开始处增加了一段SEI数据,并且可以看到部分字段,gameid.time. ...

  9. 7.17考试总结(NOIP模拟18)[导弹袭击·炼金术士的疑惑·老司机的狂欢]

    问灵十三载,等一不归人. 前言 这回考试全靠 T2 了,别的基本上没分(菜) 总感觉最近进度有亿点快,每天都在补坑,每天都在留坑.... T1 导弹袭击 解题思路 因为这个题的两种长度是不一定的,因此 ...

  10. 16位简单ASM题的记录——[HGAME 2022 week1]easyasm

    第一次遇见16位,和纯看汇编的题目,记录一下 DIE 16位,IDA用32位或者64位都可以打开 IDA 主要汇编部分 seg003:0000 ; =============== S U B R O ...