使用 Net-SNMP 和 IPython
2008-09-30 12:45:39 来源:WEB开发网使用 IPython 来测试 SNMP 代码片段的好处之一是,它就好像是一个普通的 Shell,并且许多基本的、交互式 Shell 的概念“都可以起作用”,但需要说明的是,它们是以 python 方式进行工作的。编写 SNMP 代码可能是一项非常单调乏味的活动,但是通过 IPython 来使用 Net-SNMP 库将使其变得非常有趣。
正如您所看到的,要将结果转换为 Python 数据类型,这项任务是非常简单的。这就是为什么 IPython 和 Net-SNMP 可以很好地在一起工作的原因。现在,对于编写自定义脚本来说,只需要以交互方式分析 OID 的组合以进行查询。在理想的情况下,需要运行一个大规模的、易于配置的 NMS 设置脚本,自动地将新的计算机集成到网络中。
当然,并不存在这种理想的情况,您需要了解如何将一些好的 SNMP 代码组合到一起,对于一名系统管理员来说,这是非常有用的。下面给出一个示例情况,假设您刚刚将一个高速 DDR 转换为正在运行 Ubuntu Linux 的 2 TB RAID 0 服务器,因为您必须在一个小时的时间内解决问题,所以您不得不这样做。
现在,您遇到了很大的麻烦,并且您只有几分钟的时间来监视具体的问题,以了解是否需要开始发送简历、或者是否应该开始准备讲话并请求升职。让我们使用 IPython 中的编辑功能来编写脚本,并将它保存到文件中,然后在不离开 IPython 的情况下,在一个会话中运行它: ed snmpinput.py
清单 2. IPython 模块的创建
import netsnmp
class snmpSessionBaseClass(object):
"""A Base Class For a SNMP Session"""
def __init__(self,
oid="sysDescr",
Version=2,
DestHost="localhost",
Community="public"):
self.oid = oid
self.Version = Version
self.DestHost = DestHost
self.Community = Community
def query(self):
"""Creates SNMP query session"""
try:
result = netsnmp.snmpwalk(self.oid,
Version = self.Version,
DestHost = self.DestHost,
Community = self.Community)
except:
import sys
print sys.exc_info()
result = None
return result
更多精彩
赞助商链接