6

我想编写一个 python 脚本来对运行在 linux 服务器上的远程进程执行一些非常简单的“无代理”监控。

它将在伪代码中执行以下任务:

for each remoteIPAddress in listOfIPAddresses:
    log into server@remoteIPAddress via ssh
    execute the equivalent of a 'ps -ef' command
    grep the result to make sure a particular process (by name) is still running

一种方法是在子进程中使用 python 调用 shell 脚本并解析它们的输出。这似乎效率很低。有没有更好的方法通过 python 库来做到这一点?

通过在这里和其他地方的研究,我所能找到的只是:

  • psutil - 看起来它不进行远程监控,所以我必须在远程机器上运行代理以通过 RPC 报告统计信息。
  • pymeter - 我必须编写自己的插件来监控特定的远程服务。
  • stackoverflow #4546492 - 一些有用的链接,但发布者正在寻找不同的解决方案。

谢谢,请放轻松,这是我的第一个问题:-)

4

5 回答 5

4

您可能对Fabric库感兴趣。

于 2012-08-11T01:01:37.907 回答
1

查看paramiko。您可以使用它通过 ssh 进入服务器并运行命令。然后,您可以解析结果并对它们做您想做的事情。

于 2012-08-11T00:58:22.623 回答
1

从上面的答案中得到线索,我调查了 Fabric,发现下面的演示特别有趣/有帮助。它概述了用于服务器监视和管理的三个库——Fabric、Cuis 和 Watchdog。为后代:

在 Python 中使用 Fabric、Cuisine 和 Watchdog 进行服务器管理

于 2012-08-14T18:53:33.537 回答
0

它可能比您要寻找的要重,但Zenoss支持无代理监控。

其他答案中建议的 paramiko 和 Fabric 也是不错的选择。

于 2012-08-11T02:51:13.307 回答
0

为什么不使用像 Nagios 这样的专用监控工具?Nagios 通过 NRPE 插件和 SSH 插件等进行代理和无代理监控。试试看。

于 2013-05-30T09:08:52.760 回答