Вы можете сохранить вывод ssh в переменной, затем проверить переменную и, в зависимости от ее значения, сделать что-нибудь. Например, если вы сохраните следующий код в remote-process-check.sh
#!/bin/sh
host=your-host-name-or-ip-address
status_email () {
echo 'Status email was sent.';
}
output=$(ssh root@"$host" "ps -C $1 >/dev/null && echo 'Running' || echo 'Not running'")
if [ "$output" = 'Not running' ]; then
status_email
fi
Вы можете использовать его следующим образом:
bash remote-process-check.sh process-name
bash remote-process-check.sh mysqld
bash remote-process-check.sh apache2
и если процессне работает status_email
Функция будет вызвана, и вы увидите «Сообщение о статусе было отправлено.» в вашей консоли.
Интересная часть скрипта:
output=$(ssh root@"$host" "ps -C $1 >/dev/null && echo 'Running' || echo 'Not running'")
, где с помощью ps -C $1
вы проверяете, запущен ли процесс, с >/dev/null
вы перенаправляете вывод в черную дыру, и если команда выполнена успешно, это означает, что процесс выполняется echo 'Running'
, иначе выполняется echo 'Not running'
, который хранится в переменной output