如何在Perl中监控远程Linux机器并检索已安装的软件?

时间:2011-12-01 10:00:59

标签: linux perl wmi auditing

我有几个Perl脚本允许我通过WMI监视远程Windows机器。现在我可以检查CPU使用率,内存使用情况,磁盘使用情况和已安装的软件。但是如果我想在远程Linux机器上做同样的工作呢?当然没有WMI所以我想我会用类似的东西。我已经阅读了另一个旧的StackOverflow question,Linux通过 / proc / sys 公开了信息,但是我可以从远程计算机查询它们吗?我怎么能在Perl中完全做到这一点?有专门的模块吗?

编辑:只是为了澄清,剧本必须是无代理的。

2 个答案:

答案 0 :(得分:3)

检查这些:

http://www.net-snmp.org/docs/mibs/host.html

http://www.oidview.com/mibs/0/RFC1213-MIB.html

这将为您提供内存/磁盘使用情况:

snmptable -v1 -c public localhost hrStorageTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.2.3

这将为您提供处理器利用率:

snmptable -v1 -c public localhost hrProcessorTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.3.3

接口状态:

snmptable -v1 -c public localhost ifTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.2.2

如果您使用基于rpm的Linux,这将为您提供已安装的软件:

snmptable -v1 -c public localhost hrSWInstalledTable
snmptable -v1 -c public localhost .1.3.6.1.2.1.25.6.3

你可以使这个适用于.deb风格的linux:

http://community.zenoss.org/blogs/zenossblog/2009/02/18/tip-of-the-month-snmp-software-inventory-for-debian-and-ubuntu-machines

Sample output of `snmptable -v1 -c public localhost hrProcessorTable`

        hrProcessorFrwID hrProcessorLoad
 SNMPv2-SMI::zeroDotZero              54
 SNMPv2-SMI::zeroDotZero              22

在您查询的框中,公众是否具有对.1.3.6.1.2.1.25的读取权限?

您可能需要在/etc/snmp/snmpd.conf中添加类似的内容

com2sec monitor  default         monitor

group monitorGroup v1      monitor
group monitorGroup v2c     monitor

view hardware included .1.3.6.1.2.1.25
view hardware included .1.3.6.1.2.1.2

access monitorGroup ""      any       noauth    exact  hardware    none    none

重启snmpd

然后在上面的命令中指定-c monitor而不是-c public

答案 1 :(得分:1)

我不这么认为,也许您可​​以使用Net::SSH来访问这些文件,但我认为如果安装snmp代理并为此目的使用Net::SNMP会更有意义。

监控已安装的软件可能会变得更加棘手,取决于Linux发行版,并且可能最简单的ssh。

编辑:忽略snmp部分,因为您希望无需代理。