我有几个 Perl 脚本允许我通过 WMI 监视远程 Windows 机器。现在我可以检查 CPU 使用情况、内存使用情况、磁盘使用情况和已安装的软件。但是如果我想在远程 Linux 机器上做同样的工作怎么办?当然没有 WMI,所以我想我会使用类似的东西。我读过另一个旧的StackOverflow 问题,Linux 通过/proc和/sys公开信息,但我可以从远程计算机查询它们吗?我怎样才能在 Perl 中做到这一点?有专门的模块吗?
编辑:澄清一下,脚本必须是无代理的。
我有几个 Perl 脚本允许我通过 WMI 监视远程 Windows 机器。现在我可以检查 CPU 使用情况、内存使用情况、磁盘使用情况和已安装的软件。但是如果我想在远程 Linux 机器上做同样的工作怎么办?当然没有 WMI,所以我想我会使用类似的东西。我读过另一个旧的StackOverflow 问题,Linux 通过/proc和/sys公开信息,但我可以从远程计算机查询它们吗?我怎样才能在 Perl 中做到这一点?有专门的模块吗?
编辑:澄清一下,脚本必须是无代理的。
检查这些:
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
在您查询的框中,public 是否具有对 .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
我不这么认为,也许您可以使用Net::SSH
来访问这些文件,但我认为如果您安装 snmp 代理并Net::SNMP
用于此目的会更有意义。
监控已安装的软件可能会变得更棘手,这将取决于 linux 发行版,并且可能通过 ssh 最简单。
编辑:忽略这snmp
部分,因为您想要无代理。