Простой мониторинг удаленного процесса с помощью Python

Я бы хотел написать скрипт python для выполнения очень простого «без агента» мониторинга удаленных процессов, работающих на серверах Linux.

Он выполнил бы следующие задачи в psuedocode:

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 в подпроцессе и проанализировать их вывод. Это кажется довольно неэффективным. Есть ли лучший способ сделать это через библиотеки python?

Все, что я мог найти через исследование здесь и в другом месте:

  • psutil – похоже, что он не выполняет удаленный мониторинг, поэтому мне пришлось бы запускать агентов на удаленных компьютерах, чтобы сообщать статистику по RPC.
  • pymeter – мне пришлось бы написать свой собственный плагин для мониторинга конкретной удаленной службы.
  • stackoverflow # 4546492 – Некоторые полезные ссылки, но плакат искал другое решение.

Спасибо, и, пожалуйста, успокойся, это мой первый вопрос 🙂

    Библиотека Fabric может вас заинтересовать.

    Проверьте парамико . Вы можете использовать его для ssh на сервере и запускать команды. Затем вы можете анализировать результаты и делать с ними то, что вам нужно.

    Это может быть тяжелее того, что вы ищете, но Zenoss поддерживает мониторинг без агента.

    paramiko и Fabric, предложенные в других ответах, также являются отличными вариантами.

    Взяв ответы из ответов выше, я исследовал Fabric и нашел следующую презентацию особенно интересной / полезной. Это обзор трех библиотек – Fabric, Cuisine и Watchdog – для мониторинга и администрирования сервера. Для потомков:

    Использование Fabric, Cuisine и Watchdog для администрирования сервера в Python

    Почему бы вам не использовать специальный инструмент мониторинга, например Nagios? У Nagios есть агент и агент, который меньше контролирует плагины NRPE и плагины SSH и т. Д. Попробуйте это.