snmp获取设备相关管理信息
在本文中,作者将向我们展示如何用snmp代理监视网络设备,甚至发送软件警告。
网络上很多代理在为我们服务。只要我们开启UDP/161,162端口,这些代理就会以Management Information Base (MIB)的形式给我们提供大量的网络设备信息。
有兴趣的话,你可以在网上找一堆带有SNMP (Simple Network Management Protocol) 代理监听器的网络管理软件,如SpiceWorks, Net-SNMP, NetXMS, Nagios, Zenoss等,然后找个提供Wi-Fi的网络咖啡店。如果运气好,你能找到一大堆各种各样的网络设备和同时使用网络的其它终端。
SNMP considerations
下面是我列出的使用snmp代理的优点和不足,具体情况我会在后面详细说明。
优点
l 入侵检测
l 快速网络扫描
l 交换机单点故障检查
l 硬件故障预先报警
l 性能监控
l 软件故障和异常检测
l 工业化标准,设备交互的最佳实践
不足
l 误报
l 日志管理
l 信息太多,不方便筛选
l 复杂的监控环境
l 配置管理
l 代理认证和默认的公共设置
l 多种代理信息格式
SNMP 基础
SNMP的本质是基于代理的通告系统。每个设备,甚至是很多低端的交换机和打印机,都支持这种基于代理的通告。这种通告,或者所谓的 "trap,"是由设备厂商所开发的代理功能来生成的,监听软件可以监控系统的特殊事件,比如事件日志中的某类特殊事件,然后将通告发送给SNMP处理器或者其他网络管理工具。
SNMP可 以看做是目前众多功能类似的网管框架之一,此类管理框架还包括Microsoft Windows Management Instrumentation (WMI),Web Based Enterprise Management (WEBM) 以及 Common Information Model (CIM)。CIM 已经发展成一个完整的对象模型,采用DMTF并使用UML语言。
Windows 或 Linux下的SNMP
Microsoft在WMI中完全兼容CIM 模型。比如,在Vista, Windows 7, 或 Server 2008系统中,打开命令行窗口输入以下命令:
winrm enumerate wmicimv2/Win32_ComputerSystem
这个命令会显示出电脑系统的基本硬件信息,比如主板厂商名称,另外还包括域成员名称,管理账户密码状态,服务器角色,当前用户名,主机名,启动项等各种内容。通过 WMI,用户可以对系统信息了如指掌。图 A 所显示的是开启SNMP的图表。类似的监控功能在Linux上也存在。比如,免费的WebNMS就带有一套snmp代理功能,同时还提供了通过HTTP的管理方式。
图片来自SNMPBOY.MSFT.NET
是否值得
心急的网管们这时候可能就会问,到底学习SNMP和相关内容需要多少成本呢。Distributed Management Task Force (桌面管理任务组,DMTF)是SNMP的知识库也是与SNMP关 系最密切的组织,他们坚持认为,他们的教材适用于"管理应用程序开发者,架构开发者,信息技术经理以及系统管理员。" 这可能有点夸张。而CIM Road Map Task Force 的Scott Neumann则将CIM称为"描述网络的最成熟和广泛接受的模块"。也就是说,这个模块像网络一样深入、复杂、宏大和特异。
SNMP软件
snmp代理程 序并不只针对硬件。实际上, Oracle Enterprise Manager (OEM)被修改后,可以针对来自于Oracle VM, Oracle Database, 或 Fusion Middleware的警告信息作出反应。这里所说的是Oracle提供的 Contact Center Anywhere (CCA) 程序。他不但可以让 SNMP用户拥有常用的与电话相关的管控能力,还提供诸如软件许可失败,"恶意呼叫追踪",自动呼叫分布语音信箱等功能。也就是说,SNMP程序是可以被调整的,以便让管理者更好的理解其性能,也可以拥有在一定条件下自动升级的能力,或者适应于企业特定的工作流程。软件通过设计,能够实现令人兴奋的结果。
不过这个谍对谍的世界总是充满了风险。SNMP最初的设计者对周围的环境过于信任,并没有考虑安全问题。SNMP的"community strings"功能就像管理者和代理之间的密码。community string出现在这两者之间通信的所有数据包中。不要冒险让你的snmp代理变 成双面间谍。也不要接受默认的"public" 或 "private"的community strings。 "Private"尤其容易出问题,因为它可以允许攻击者修改设备配置。如果不得不采用默认的"private"的community strings,那么就要限制能够访问SNMP的IP地址,从而确保通信安全。SNMP Version 3新增了代理加密功能,可以有效降低man-in the-middle类型的攻击,但并不是所有网络设备都支持这种功能。
购买注意事项
全面的购买指南肯定要比本文详细的多,所以我在这里只提供几个重要的购买注意事项:
l 记住就算一个很小的网络也会拥有上百甚至上千个"设备"。如果价格是根据设备的数量来定的,那么要注意了。
l "自动网络发现"是一个很好的概念,但是它是假设所有状况都是理想情况,比如所有的代理和管理者能彼此看到对方。
l SNMP监控有托管方式的,也有网络内部自己管理的。
l 要把时间成本加入其中。虽然不比一次搞定所有设置,但是在SNMP警告信息的简历方面,可能耗时比较多。
snmp获取设备相关管理信息的更多相关文章
- ios 获取设备相关的信息
.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name; //获取设备所有者的名称 NSStr ...
- C# 获取操作系统相关的信息
本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Envir ...
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...
- 获取设备和 App 信息
设备对照表:https://www.theiphonewiki.com/wiki/Models 获取设备和 App 信息代码: NSLog(@"设备信息如下"); NSLog(@& ...
- [Android]获取设备相关信息
public static int screenWidth(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); activit ...
- iOS ---------- 获取设备的各种信息
一.目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前系统名称 获取当前系统版本号 获取通用的唯一识别码UUID 获取当前设备IP 获取总内 ...
- iOS 获取设备的各种信息的方法
一.目录结构: 获取屏幕宽度与高度 获取设备版本号 获取iPhone名称 获取app版本号 获取电池电量 获取当前系统名称 获取当前系统版本号 获取通用的唯一识别码UUID 获取当前设备IP 获取总内 ...
- ios 获取手机相关的信息
获取手机信息 应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来 //获取版本号 NSDictionary *infoDict = [[NSBundl ...
- Android开发之获取设备的屏幕信息和px dp之间的转换
DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metr ...
随机推荐
- ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
程序连接orarle报ORA-12505错误 一.异常{ ORA-12505, TNS:listener does not currently know of SID given in connect ...
- bzoj3223: Tyvj 1729 文艺平衡树 splay裸题
splay区间翻转即可 /************************************************************** Problem: 3223 User: walf ...
- Lua 中的 function、closure、upvalue
Lua 中的 function.closure.upvalue function,local,upvalue,closure 参考: Lua基础 语句 lua学习笔记之Lua的function.clo ...
- Leetcode 53
//经典class Solution { public: int maxSubArray(vector<int>& nums) { ; int maxsum = -INT_MAX; ...
- MapReduce中文翻译
MapReduce:超大机群上的简单数据处理 摘要 MapReduce是一个编程模型,和处理,产生大数据集的相关实现.用户指定一个map函数处理一个key/value对,从而产生中间的key/va ...
- 让IE兼容console——“由于出现错误80020101而导致此项操作无法完成”的解决方案
问题描述 经测试发现问题只出现在: 1.原生IE8(其他版本IE模拟出的IE8无此问题) 2.从打开IE8没有开启过F12(曾经开启过又关闭的无此问题) IE8报错“由于出现错误80020101而导致 ...
- java基础第6天
面向对象 当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高.可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始改进,能不能把这些步骤和功能再进行封装,封装时根据不 ...
- 穷举算法和递推算法(Java)
穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...
- 第1课 学习C++的意义
C++是C语言的加强,它们之间并不是对立的关系. 学习C++的优势: 现代软件产品的架构图: 操作系统抽象层:可有可无,但是作为一个移植性好的软件一定需要这一层.这一层的作用就是把操作系统提供的接口做 ...
- 解决使用SecureCRT出现的Generic clipboard failure错误【自己亲身经历】
2016年11月8日:[解决办法]把金山词霸卸载了 血的教训浪费了好几个小时 相关文章 1.RecureCRT could not get data from the Clipboard 和SAP快捷 ...