一个小型但完整的netsnmp cTypes包装器。

fusnmp的Python项目详细描述


fusnmp:一个基于python cTypes的网络SNMP包装模块。

:警告:注意:这最初称为dlnetsnmp,由alesandro iob编写。我 曾试图联系他,但未能联系上。这是我最后的密码 这是在dlevel.com网站上发布的。这是最低限度的维护 支持遗留系统,我不建议将其作为 新项目。

这是net snmp的一个小而几乎完整的包装器。 这个库最初基于cool people在 zenoss

当前版本已经用python 2.7和netsnmp 5.7.3进行了测试。

功能

  • 同步和异步的"get"、"getbulk"、"walk"和"set"操作。
  • mib管理:设置/获取mib路径、加载新mib、获取oid描述 从MIB、OID到名称(反之亦然)转换工具。
  • 会话管理、内部异步事件管理、可插入记录器 以及有意义的错误报告。
  • 多平台:在Linux(我认为其他Unix也在)、Windows和OSX下运行。

错误和不支持的功能

  • 如果从多个线程使用,则不起作用。
  • 已实施陷阱收集,但未进行测试。
  • 表未实现。

您可以在"fusnmp.py"文件的末尾找到一些简单的测试和使用模式。

安装

pip install fusnmp

使用指南

snmp会话由snmpmanager类管理。这门课是单门课, 所以它总是有一个单独的实例。

import fusnmp
sm = fusnmp.SNMPManager()

snmpmanager接受以下可选参数:

  • name:经理的姓名(默认为"snmpmanager")
  • 日志:记录SNMP消息时使用的回调函数。回调必须 接受两个参数:优先级和消息。
  • max_fd:"select"文件使用的最大文件描述符数 (默认值为1024)
  • 线程处理器:如果异步SNMP事件设置为true(默认值) 处理器必须在独立线程中执行。如果错误,则 必须定期调用"process_sessions"方法。
  • 进程会话睡眠:float指定"进程会话"的秒数 方法必须在每次循环后休眠(默认值为0.01)。
  • local_dir:持久数据(mib等)所在目录的路径 存储。如果未给定(默认为无),则将使用模块目录。 在给定路径中,必须存在名为"mibs"的目录:所有默认mibs 应该在这里提供,否则会出现很多错误,比如 "错误:找不到模块(IP-MIB):在第1行(无)"。

当不再需要snmpmanager时,应该使用 "销毁"方法。

MIB管理方法

  • set_mib_dir(path_to_mib_dir):设置搜索mib文件的目录。

  • add_mib_dir(path_to_mib_dir):将目录添加到已定义的目录, 应该在哪里搜索MIB文件。

  • add_mib_dir(path_to_mib_dir):从搜索到的目录中删除目录 MIB文件。

  • get_mib_dir():返回搜索mib文件的当前目录。

  • read_mib(path_to_mib_file):将mib文件读入内存。

  • refresh_mibs():重新加载正在使用的所有mib定义。

会话管理方法

  • add_session(name,version='1',**kargs):创建并打开一个新的snmp会话。 参数为:

    • 名称:会话唯一名称。
    • 版本:SNMP协议版本("1"、"2"、"3",默认值为"1")
    • kargs:snmp协议特定的会话参数。您可以在此传递任何有效的会话字段。 通常用于版本"1"和"2":
      • peername:要查询的SNMP代理的主机名。
      • 社区:要使用的社区字符串。
      • 超时:重试前的秒数(默认为1秒)
      • 重试次数:失败前的重试次数(默认为5次)

    返回会话对象或引发异常。

  • add_trapd_session(name,peername,fileno=-1):创建SNMP陷阱守护进程会话。 陷阱管理未测试。

  • 删除会话(名称):关闭并删除给定部分。

  • find_session(sessiond):返回与给定 会话ID。

  • snmp_manager_instance[会话名称]:返回会话实例 名字。

会话事件

  • bind(slot,uid,session,callback):将回调函数绑定到会话的 事件插槽。参数为:

    • 插槽:插槽名称(见下文)。
    • uid:用于引用绑定的唯一标识符。
    • 会话:所有会话的会话名称或"无"。
    • callback:对事件调用的回调函数。回调签名 必须是(插槽、会话名称、请求ID、结果)。
  • unbind(slot,uid,session=none):删除绑定的回调。 参数为:

    • 插槽:插槽名称。
    • uid:绑定唯一id,如"bind"调用中指定的。
    • 会话:所有会话的会话名称或"无"。

可用的插槽为:

  • "get":当异步"get"响应到达时发出。
  • "getNext":当异步"getNext"响应到达时发出。
  • "getBulk":当异步"getBulk"响应到达时发出。
  • "set":当异步"set"响应到达时发出。
  • "通知":陷阱管理(未测试)。
  • "trap":陷阱管理(未测试)。
  • "trap2":陷阱管理(未测试)。
  • "报告":陷阱管理(未测试)。
  • "response":在任何响应类型上发出,不包括"timeout"。
  • "timeout":按请求发出超时。分配的回调签名必须是 (插槽、会话名称、请求ID)。

会话实例

  • get_description(oid,width=80,buffer_size=10240):返回oid的描述 从mib文件。参数为:

    • oid:oid名称或oid元组。
    • 宽度:格式化返回描述的宽度。默认值(80) 几乎总是正确的。
    • 缓冲区大小:存储描述的缓冲区的大小。默认值 值(80)几乎总是正确的。
  • sync_get(oids,exc_on_error=false):对执行同步"get"请求 给定的OID。参数为:

    • oids:oid名称或元组的列表。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • sync_getbulk(非重复、最大重复、oids、exc_on_error=false):执行 给定oid的同步"getBulk"。参数为:

    • 非重复:非重复次数。
    • 最大重复次数:最大重复次数。
    • oids:oid名称或元组的列表。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • sync_walk(root,exc_on_error=false):执行同步"getNext"请求 对于给定的oid。参数为:

    • oids:oid名称或元组。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • sync_set(oids_values,exc_on_error=false):执行同步"set"请求 对于给定的oid。参数为:

    • oids:元组(oid name or tuple,value to set)的列表。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • async_get(oids,wait=false,exc_on_error=false):执行异步"get" 请求给定的oid。参数为:

    • oids:oid名称或元组的列表。
    • wait:用于使异步调用同步,不能使用并保留为false。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • Async_GetBulk(非重复、MaxRepetitions、oids、wait=false、exc_on_error=false): 对给定的oid执行异步"getBulk"。参数为:

    • 非重复:非重复次数。
    • 最大重复次数:最大重复次数。
    • oids:oid名称或元组的列表。
    • wait:用于进行异步调用sync,不得使用,并保留为false。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • async_walk(root,wait=false,exc_on_error=false):执行异步 "GetNext"请求给定的OID。参数为:

    • oids:oid名称或元组。
    • wait:用于进行异步调用sync,不得使用,并保留为false。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。
  • async_set(oid_值,wait=false,exc_on_error=false):执行异步 为给定的oid"set"请求。参数为:

    • oids:元组(oid name or tuple,value to set)的列表。
    • wait:用于进行异步调用sync,不得使用,并保留为false。
    • exc_on_error:true在请求失败时引发异常(默认值为false)。

实用程序

  • str_to_oid(s):将字符串转换为oid元组。

  • strs_to_oids(l):将字符串列表转换为oid元组列表。

  • oid-to-str(oid):将oid元组转换为字符串。

  • oid-to-strs(l):将oid元组列表转换为字符串列表。

  • oid_to_dot(oid):将oid转换为"点"字符串。

  • oids_to_dots():将oid列表转换为"点"字符串列表。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaEclipseMars没有保存首选项   java梯度同步失败:原因:启动失败:   java如何从嵌套的JSON获取数据?   java如何判断可观察对象中的任何对象满足一个条件?   java将字符串转换为保持相同值的byte[]数组   java有没有办法绕过AuditingEntityListener为测试设置数据?   从/usr/share/java中解析linux JAR依赖关系   安卓 My java函数抛出nullpointerexception?   java Gradle使用正确版本的依赖项   JBoss和Java6中带注释的WebService中的web服务ClassCastException   java如何修复codename one中的简单逻辑错误?   java如何迭代矩阵的索引?   java如何在JPanel不可见时将其保存为图像?   java HashMap如何在Kotlin中实现MutableMap接口?   javascript如何在单击后加载特定片段?   EclipseJava为纳什均衡获取所有玩家/策略组合   JavaSpring:Web服务REST在JSON上产生双反斜杠   java为什么ServletContext#getRealPath(“/”)返回相对路径?   java当我的游戏应该重新启动时,我应该如何处理重置SurfaceView和线程?