Я пишу код, который в настоящее время SSH на несколько серверов поочередно и дистанционно проверяет, работает ли процесс. Конечная цель - получить уведомление по электронной почте, если процесс не запущен. У меня много работы.инструкция if, SSH и выполнение удаленных команд
Однако я также хочу получить предупреждение, если соединение SSH не удастся. Проблема в том, что бы я ни старался, я не могу заставить ее работать с моим текущим кодом if, else.
#!/bin/sh
filename="/root/scripts/sysmon_server_lists.txt"
identity="/root/.ssh/sysmon"
OLDIFS=$IFS
IFS=,
while read -r server searchtxt;
do
if [ ! -z $server ]
then
if [ `ssh -n -q -t -i $identity [email protected]$server "ps -ef | grep $searchtxt | grep -v grep | wc -l"` -gt 0 ]
then
echo "Process is running on $server."
else
echo "Process is not running on $server."
fi
echo "Server is $server"
echo "Searchtext is $searchtxt"
echo " "
echo "-----"
echo " "
fi
done < $filename
IFS=$OLDIFS
echo "Finished"
exit 0
Не тестируйте выход из 'ssh' локально. Протестируйте его на удаленном конце и выйдите с успехом или в состояние ошибки, если это необходимо. Затем используйте этот статус ошибки как ваш индикатор (это также дает вам указание на сбой ssh). –