Perl监控Windows主机功能实现(原创)
时间:2011-01-24
来源:互联网
本帖最后由 jiannma 于 2011-01-24 10:47 编辑
看到坛子里面有很多介绍如何使用Perl来监控Windows的例子:
可以通过Win32::OLE和DBD::WMI模块来获取Windows机器的
CPU等信息,但是这些模块应该都是在Windows上运行的,因此在Linux上,无法安
装这两个模块。那有没有其他的方法来实现此功能?自己摸索了下,发现可以使用
Perl 自带的Net::SNMP模块来实现。 (这里感谢flw老大的提醒 ^-^)
下面就是我自己的解决方式,如果有那些方面讲的不对,欢迎大家进行修改:
一. 首先介绍下 实验环境:
二.解决步骤:
1.Client端设置
由于Server要使用Net::SNMP模块,所以Client需要安装SNMP服务,安装方法如下:
使用管理员帐号登录,依次选择:”开始“->“控制面板”-> “添加/删除程序”->”添加/删除
Windows组件“,选择里面的”管理和监视工具”,然后点击“下一步”进行安装即可。
安装完成后,点击“我的电脑”,右键点击选择”管理“->”服务和应用程序”->“服务”,
选择里面的“SNMP Service”,如下图所示:
右键点击该服务选择”属性”,选择”陷井”,如下图所示:
这里进行如下的设置:
团体名称: MysnmpComm
然后选择”添加到列表“->”添加“-> 添加主机IP,这里就填写192.168.7.67,如下图所示
填写完成后选择”添加“即可,然后右键点击该服务,选择”重新启动”即可。这样,
Client端的设置就基本完成了。
2.SNMP原理
这里先简单描述下SNMP的原理,如下所示:
说明:
1、snmp代理程序(Linux的常用代理程序是net-snmp)把从设备读到的各种数据(比
如网卡数据包的进出情况)以SMI规定的格式 (这种格式要求MIB变量必 须以
1.3.6.1.2.1开头)写到MIB库中(MIB库就像抽屉一样,有很多变量,每一个变量存储
着设备的信息。比如 1.3.6.1.2.1.7.1,这个变量里存储了收到了多少UDP协议包)
2、snmp管理器程序(MRTG、SolarWinds等软件)通过snmp协议与snmp代理程序联
系,以便间接读取MIB库中的数据。
简单的来说就是:SNMP是依据对象的OID( Object Identifiers)号来区别每个对象的。
3.Server端设置
明白了上面的原理后,接下来Server端的设置就比较的容易了,使用Perl来编写程序
即可。在此之前,可以先测试下,看Client服务是否配置正确。
在Server端运行下面的命令:
根据上面的结果我们可以得知客户端的设置是正确的。
在这里我们可以用工具查看设备的OID,附件为相应的工具,
mibbrowser.zip (653.01 KB)
使用方法:
解压到本地,然后打开里面的"MIbrowser.exe"即可:
附上我自己使用该工具的截图:
测试脚本如下:
test@camlit ~: vi snmp_win.pl
复制代码
总结:只要知道对象的OID号就可以显示出Windows里面的各种信息。
目前还在思考怎么监控CPU/Memory的使用情况....
看到坛子里面有很多介绍如何使用Perl来监控Windows的例子:
可以通过Win32::OLE和DBD::WMI模块来获取Windows机器的
CPU等信息,但是这些模块应该都是在Windows上运行的,因此在Linux上,无法安
装这两个模块。那有没有其他的方法来实现此功能?自己摸索了下,发现可以使用
Perl 自带的Net::SNMP模块来实现。 (这里感谢flw老大的提醒 ^-^)
下面就是我自己的解决方式,如果有那些方面讲的不对,欢迎大家进行修改:
一. 首先介绍下 实验环境:
QUOTE:
Server : CentOS 5.5 x86_64 (perl 5.8.8 )
IP : 192.168.7.67
Client : Windows XP SP3 (使用VBOX虚拟机)
IP: 192.168.56.101
IP : 192.168.7.67
Client : Windows XP SP3 (使用VBOX虚拟机)
IP: 192.168.56.101
二.解决步骤:
1.Client端设置
由于Server要使用Net::SNMP模块,所以Client需要安装SNMP服务,安装方法如下:
使用管理员帐号登录,依次选择:”开始“->“控制面板”-> “添加/删除程序”->”添加/删除
Windows组件“,选择里面的”管理和监视工具”,然后点击“下一步”进行安装即可。
安装完成后,点击“我的电脑”,右键点击选择”管理“->”服务和应用程序”->“服务”,
选择里面的“SNMP Service”,如下图所示:

右键点击该服务选择”属性”,选择”陷井”,如下图所示:

这里进行如下的设置:
团体名称: MysnmpComm
然后选择”添加到列表“->”添加“-> 添加主机IP,这里就填写192.168.7.67,如下图所示

填写完成后选择”添加“即可,然后右键点击该服务,选择”重新启动”即可。这样,
Client端的设置就基本完成了。
2.SNMP原理
这里先简单描述下SNMP的原理,如下所示:

说明:
1、snmp代理程序(Linux的常用代理程序是net-snmp)把从设备读到的各种数据(比
如网卡数据包的进出情况)以SMI规定的格式 (这种格式要求MIB变量必 须以
1.3.6.1.2.1开头)写到MIB库中(MIB库就像抽屉一样,有很多变量,每一个变量存储
着设备的信息。比如 1.3.6.1.2.1.7.1,这个变量里存储了收到了多少UDP协议包)
2、snmp管理器程序(MRTG、SolarWinds等软件)通过snmp协议与snmp代理程序联
系,以便间接读取MIB库中的数据。
简单的来说就是:SNMP是依据对象的OID( Object Identifiers)号来区别每个对象的。
3.Server端设置
明白了上面的原理后,接下来Server端的设置就比较的容易了,使用Perl来编写程序
即可。在此之前,可以先测试下,看Client服务是否配置正确。
在Server端运行下面的命令:
QUOTE:
test@camlit ~: snmpwalk -v2c -c MysnmpComm 192.168.56.101 1.3.6.1.2.1.11.29
QUOTE:
SNMPv2-MIB::snmpOutTraps.0 = Counter32: 3
参数说明:
-v2c:SNMP 版本2
-c :COMMUNITY 名字,就是前面设置的”MysnmpComm”
192.168.56.101 : 客户端IP
1.3.6.1.2.1.11.29:OID,
查资料发现它的MIB就是(.iso.org.dod.internet.mgmt.mib-2.snmp.snmpOutTraps)
参数说明:
-v2c:SNMP 版本2
-c :COMMUNITY 名字,就是前面设置的”MysnmpComm”
192.168.56.101 : 客户端IP
1.3.6.1.2.1.11.29:OID,
查资料发现它的MIB就是(.iso.org.dod.internet.mgmt.mib-2.snmp.snmpOutTraps)
根据上面的结果我们可以得知客户端的设置是正确的。
在这里我们可以用工具查看设备的OID,附件为相应的工具,

使用方法:
解压到本地,然后打开里面的"MIbrowser.exe"即可:
附上我自己使用该工具的截图:

测试脚本如下:
test@camlit ~: vi snmp_win.pl
- #!/usr/bin/perl
- #This program is used to gather the Windows Server Information
-
- use strict;
- use Net::SNMP;
-
- my $desc = '1.3.6.1.2.1.2.1.0'; ## The interfaces oid
-
- #Create a new object
- my ($session, $error ) = Net::SNMP->session(
- -hostname => "192.168.56.101",
- -community => "MysnmpComm",
- -timeout => "30",
- -port => "161"
- );
-
-
- die "Session error: $error\n" unless ($session);
-
- my $response = $session->get_request($desc);
- die "Request error:" . $session->error unless (defined $response);
-
- $session->close;
- print "Number of interfaces : ". $response->{$desc};
QUOTE:
test@camlit ~: chmod +x snmp_win.pl
test @camlit ~: ./!$
Number of interfaces : 2
test @camlit ~: ./!$
Number of interfaces : 2
总结:只要知道对象的OID号就可以显示出Windows里面的各种信息。
目前还在思考怎么监控CPU/Memory的使用情况....
作者: jiannma 发布时间: 2011-01-24
学习了~
作者: x9x9 发布时间: 2011-01-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28