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

发布于 2024-12-19 03:11:53 字数 374 浏览 0 评论 0原文

我有几个 Perl 脚本,允许我通过 WMI 监视远程 Windows 机器。现在我可以检查 CPU 使用情况、内存使用情况、磁盘使用情况和已安装的软件。但是如果我想在远程 Linux 机器上做同样的工作怎么办?当然没有 WMI,所以我想我应该使用类似的东西。我读过另一个旧的 StackOverflow 问题,Linux 通过 < em>/proc 和 /sys 但我可以从远程计算机查询它们吗?我怎样才能在 Perl 中准确地做到这一点?有专用模块吗?

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

I have a couple of Perl scripts that allow me to monitor remote Windows machinses through WMI. Right now I can check CPU usage, Memory usage, Disk usage and Installed Software. But what if I want to do the same job on a remote Linux machine? Ofcourse there's no WMI so I guess I shall use something similar. I have read on another old StackOverflow question that Linux exposes informations through /proc and /sys but can I query them from a remote computer? And how can I do that exactly in Perl? Is there a dedicated module?

EDIT: Just to clarify, the script MUST be agent-free.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

帝王念 2024-12-26 03:11:53

检查这些:

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< /a>

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

Check these :

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

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

This will give you memory / disk usage :

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

This will give you processor utilisation :

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

Interface Status :

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

If you use rpm-based linux, this will give you installed software :

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

You can make this work for .deb flavours of 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

On the box you are querying, does public have read access to .1.3.6.1.2.1.25 ?

You may need to add something like this to your /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

The restart snmpd

Then specify -c monitor in the commands above instead of -c public

‖放下 2024-12-26 03:11:53

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

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

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

I don't think so, perhaps you can use Net::SSH to access these files, but I think it would make more sense if you install snmp agent and use Net::SNMP for the purpose.

Monitoring installed software may get trickier, will depend on the linux distribution and will probably be easiest over ssh.

EDIT: Ignore the snmp part, since you want to be agent-free.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文