Как узнать, какие хосты не выполняют определенный процесс

for i in `cat hosts_list`; do RES=`ssh myusername@${i} "ps -ef " |awk '/[p]rocessname/ {print $2}'`; test "x${RES}" = "x" && echo $i; done


Команда for i in 'cat hosts_list'; do res=ssh myusername@${i} «ps -ef » |awk ‘/[p]rocessname/ {print $2}’; test "x${res}" = "x" && echo $i; done позволяет узнать, на каких хостах не запущен определенный процесс.

Эта команда использует цикл for для перебора значений из файла hosts_list. Для каждого хоста из списка команда выполняет SSH-соединение с указанным пользователем (myusername@${i}) и выполняет команду ps -ef для получения списка запущенных процессов. Затем утилита awk используется для поиска процесса с заданным именем ([p]rocessname), и если такой процесс не найден, то его PID ($2) добавляется в переменную res.

Далее, команда test "x${res}" = "x" сравнивает значение переменной res с пустой строкой. Если они равны, то выводится имя хоста $i, что означает, что на этом хосте не запущен заданный процесс.

Альтернативным способом выполнения данной задачи может быть использование конфигурационного менеджера, например, Ansible или Puppet, который позволяет автоматизировать выполнение команд на удаленных хостах.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *