我有几个Perl脚本允许我通过WMI监视远程Windows机器。现在我可以检查CPU使用率,内存使用情况,磁盘使用情况和已安装的软件。但是如果我想在远程Linux机器上做同样的工作呢?当然没有WMI所以我想我会用类似的东西。我已经阅读了另一个旧的StackOverflow question,Linux通过 / proc 和 / sys 公开了信息,但是我可以从远程计算机查询它们吗?我怎么能在Perl中完全做到这一点?有专门的模块吗?
编辑:只是为了澄清,剧本必须是无代理的。
答案 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:
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
部分,因为您希望无需代理。