Есть ли причина, по которой это нужно делать в Perl?Существует существующий инструмент dsh , который обеспечивает именно эту функциональность использования ssh
для запуска команды оболочки на нескольких хостах и выдачи отчета о выходе каждого из них.Он также имеет возможность с помощью переключателя -c
(одновременный) одновременно запускать команду на всех хостах, а не ждать завершения каждого из них, прежде чем переходить к следующему, что вам понадобится, если вы хотите отслеживать150 машин каждые 10 минут, но проверка каждого хоста занимает 1 минуту.
Чтобы использовать dsh
, сначала создайте файл в ~/.dsh/group/
, содержащий список ваших серверов.Я положу мой в ~/.dsh/group/test-group
с содержанием:
galera-1
galera-2
galera-3
Тогда я могу запустить команду
dsh -g test-group -c 'df -h /'
и получить результат:
galera-3: Filesystem Size Used Avail Use% Mounted on
galera-3: /dev/mapper/debian-system 140G 36G 99G 27% /
galera-1: Filesystem Size Used Avail Use% Mounted on
galera-1: /dev/mapper/debian-system 140G 29G 106G 22% /
galera-2: Filesystem Size Used Avail Use% Mounted on
galera-2: /dev/mapper/debian-system 140G 26G 109G 20% /
(Они вышли из строя, потому что я использовал -c
, поэтому команда была отправлена на все три сервера одновременно, и результаты были напечатаны в порядке получения ответов. Без -c
они будут отображатьсяв том же порядке серверы перечислены в файле group
, но затем он будет ждать каждого ответа перед подключением к следующему серверу.)
Но, на самом деле, речь идет о повторении этой проверки каждые 10минут, звучит так, как будто вам нужна действительно система мониторинга, такая как Icinga (высокопроизводительный форк более известного Nagios ), а не просто способ запускакоманды удаленно на нескольких машинах (что обеспечивает dsh
).К сожалению, настройка системы мониторинга Icinga слишком сложна, чтобы я мог привести здесь пример, но я могу вам сказать, что мониторинг дискового пространства является одной из проверок, которые включаются и включаются по умолчанию при его использовании.