Добрый день, многоуважаемый ЛОР!
Пишу скрипт для автоматизации своей же работы ...
Есть множество серверов, нужно скопировать туда пару rpm пакетов, остановить некоторые сервисы, обновить rpm пакеты, запустить сервисы ...
То, что сделал приведено ниже, но почему-то после выполнения команд (на шаге ssh -l root ${ip} ...) исполнение дальше не идет, скрипт залипает на одном месте, хотя команды выполнились и все ок. Wtf?
#!/bin/bash
log="$0.log"
PKG1=`ls | grep pkg | sort -r |head -1`
# PKG2=`ls | grep pkg2 | sort -r |head -1`
#...
usage() {
echo 'Usage:'
echo '...'
}
echo2() {
echo $1
echo `date +"%r %F"` $1 >> $log
}
install() {
ip=$1
echo2 "Connecting to $ip..."
echo2 "Copying files to $ip"
scp -B -o "ConnectTimeout 5" $PKG root\@${ip}:/root/ >> $log 2>&1
echo2 "Executing commands on $ip"
ssh -l root ${ip} "service blabla1 stop; \
service blabla2 stop; \
service blabla3 stop; \
rpm -Uhv $PKG1; \
service blabla1 start; \
service blabla2 start; \
service blabla3 start" >> $log 2>&1
echo2 "Done. Have a lot of fun!"
echo '' >> $log
}
case $1 in
-h|--help)
usage
;;
-i|--ip)
for ip in `echo $* | grep -Po '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'`; do
install $ip
done
;;
*)
usage
;;
esac
exit 0