网络相关的命令工具研究报告:利用SNMP获取远程操作系统的描述信息和开机时间
一、SNMP简介
SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。
二、SNMP服务的开启
Window和部分Linux自带snmp服务,只需要简单的配置和开启即可,方法网络上很多,不多赘述。
三、使用工具获取远程系统信息
以下将采用三种方式简单的获取设备的描述信息和开机时间,想了解更多的系统信息,可以网上查阅有关SNMP、MIB以及OID的介绍。
1.Windows下的Snmputil命令行工具,该工具Windows系统并没有自带,网络上可以很方便的下载到。
命令规则:Snmputil.exe get IP地址 被检测系统设置的团体字(类似于密码) OID信息
如下图所示,我把Snmputil.exe放置在了C盘,在192.168.1.102电脑上设置的团体字为:SA19225338,以下为获取192.168.1.102设备的描述信息的打印结果。其中.1.3.6.1.2.1.1.1.0为设备描述的oid

如下图所示,为我所获取192.168.1.102设备的开机时间,其中.1.3.6.1.2.1.1.1.0为设备开机时间的oid

2.使用Java语言获取这些信息
使用方法:
a.新建Java工程,引入snmp4j lib包如图:

b.编写代码
public static void main(String[] args) throws Exception
{
//目标机器地址,SNMP默认端口号为161
Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
//构建SNMP对象,该对象中有用于SNMP的相关方法
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
transport.listen();
CommunityTarget target = new CommunityTarget();
//在机器上配置好的团体字
target.setCommunity(new OctetString("SA19225338"));
//设置基本信息
target.setAddress(targetAddress);
target.setRetries(2);//重试次数
target.setTimeout(1500);//超时时间
target.setVersion(SnmpConstants.version2c);//SNMP版本
PDU pdu = new PDU();
//系统描述信息OID
pdu.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,1,1,0 })));
//系统开机时间OID
pdu.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,1,3,0 })));
pdu.setType(PDU.GET);
ResponseEvent event = snmp.send(pdu, target);
if (event != null && event.getResponse() != null) {
//得到返回信息的集合
Vector<VariableBinding> recVBs = (Vector<VariableBinding>) event.getResponse().getVariableBindings();
//遍历返回信息
for (int i = 0; i < recVBs.size(); i++) {
VariableBinding recVB = recVBs.elementAt(i);
System.out.println(recVB.getOid() + " : " + recVB.getVariable());
}
}
snmp.close();
}
c.打印结果,可以看到已经打印出设备的描述信息和开机时间

3.采用可视化工具获取这些信息
网络上可视化管理工具比较多,使用起来更为方便简单,可以作为检测代码的对照工具,下面我以MIB Browser为例: 

浙公网安备 33010602011771号