У меня есть быстрый скрипт для запуска команды на каждом сервере с использованием ssh (я уверен, что есть много лучших способов сделать это, но он был предназначен просто для быстрой работы !!). Для test1 и т. Д. Сервер отсутствует, поэтому сценарий продолжается, сценарий также продолжается в случае сбоя аутентификации pubkey. Однако, если скрипт соединяется, дата печатается, но цикл ssh завершается ...
#!/bin/bash -x
cat <<EOF |
##file servers
test1
test2
server1
server2
EOF
while read line
do
if [ "${line:0:1}" != "#" ]; then
ssh -q -oPasswordAuthentication=no -i id_dsa user1@${line} date
fi
done
echo read line must have exited
вывод выглядит так;
+ cat
+ read line
+ '[' t '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa user1@test1 date
+ read line
+ '[' t '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa user1@test2 date
+ read line1
+ '[' s '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa user1@server1 date
Fri Jul 9 09:04:16 PDT 2010
+ read line
+ echo read line must have exited
read line must have exited`enter code here`
что-то, что связано с успешным возвратом команды ssh, связано с условием цикла или переменной ... какие-либо предложения по поводу чего?