一个小型但完整的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列表转换为"点"字符串列表。