2012-08-11 519 views
5

我想編寫一個python腳本來對運行在Linux服務器上的遠程進程執行一些非常簡單的「無代理」監控。使用Python進行簡單的遠程進程監控

它將執行以下任務,在僞代碼:

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

一種方式做到這一點是有一個子蟒調用shell腳本和解析它們的輸出。 這似乎相當低效。有沒有更好的方式通過python庫做到這一點?

我只能通過研究發現這裏和其他地方是:

  • psutil - 看起來像它不會做遠程監控,所以我不得不通過在遠程計算機上運行的代理報告的stats RPC。
  • pymeter - 我將不得不編寫自己的插件來監視特定的遠程服務。
  • stackoverflow #4546492 - 一些有用的鏈接,但海報正在尋找不同的解決方案。

感謝,並請寬容我,這是我的第一個問題:-)

+0

http://www.noah.org/python/pexpect/也是一個gud選項,我猜 – 2012-08-11 01:06:45

+0

謝謝。我已經下載了它,並將與織物(下面)並行評估。 – tohster 2012-08-11 21:30:33

回答

3

Fabric圖書館可能會對您感興趣。

+0

+1 Fabric,使得用Python編寫和維護shell腳本的效率更高。 – 2012-08-11 02:31:11

+0

非常感謝。看起來我仍然需要使用ssh命令來完成它的核心,但是Fabric比我想象中的更優雅地包裝它自己。感謝提示建議! – tohster 2012-08-11 21:28:08

1

退房paramiko。您可以使用它ssh進入服務器並運行命令。然後,您可以解析結果並根據您的需要進行操作。

+0

感謝您的建議。我想我會從Fabric開始,但這是B計劃和一個很好的答案。 – tohster 2012-08-11 21:26:52

+0

看着織物和Paramiko。我接受這個答案是因爲它最符合最初的問題。 – tohster 2012-08-14 19:52:41

0

它可能比您要查找的要重,但Zenoss支持無代理監視。

paramiko和Fabric,在其他答案中建議,也是很好的選擇。

+0

謝謝。看起來像一個商業產品,所以我會保存在我的筆記本中,以便稍後擴展。 – tohster 2012-08-11 21:28:58

+0

它是開源的,但它們也有商業版本。 – 2012-08-12 13:59:01

0

你爲什麼不使用像Nagios的專用監測工具? Nagios的代理和代理通過NRPE插件和SSH插件等進行更少的監控。 試一試。