У меня есть скрипт bash, который подключается к различным машинам в цикле, этот сценарий также перезагружает машины, если передан параметр reboot = y (с использованием jenkins).
выпуск -
Если reboot = y, он не может последовательно выполнить команду ssh для каждого хоста, затем вывести «перезагрузку хоста», а затем запустить sh app-services.sh $ APP
Моя цель - после перезагрузки я хочу, чтобы он пинговал хосты один за другим, и если ping возвращает успех, верните ssh обратно на компьютер и перезапустите службы размещенного приложения.
Мой текущий скрипт -
#!/bin/bash
IP_S="${HOSTS_STAGE}"
IP_P="${HOSTS_PROD}"
APP="$APPLICATION"
export APP
export host
if [ "${ENVIRONMENT}" == 'stage' ]; then
IP="${IP_S}"
elif [ "${ENVIRONMENT}" == 'prod' ]; then
IP="${IP_P}"
fi
echo "${IP}"
for host in ${IP}; do
echo "########################################"
echo "## Running yum update on ${host}"
echo "########################################"
if [ "${REBOOT}" == 'n' ]; then
ssh -i "${id_rsa}" -o StrictHostKeyChecking=no dvopsadmin@${host} "sudo yum update -y"
echo "## Skipping reboot for ${host}"
else
ssh -i "${id_rsa}" -o StrictHostKeyChecking=no dvopsadmin@${host[@]} "sudo reboot"
echo "## Rebooting ${host}"
ping -w 30 -c 1 ${host}
# This is the other script that restart app services
sh app-services.sh $APP
fi
done