Наткнулся я на то что скрипт запущенный локально — работает, а если его запустить на удалённой машине он вываливается из цикла while
#!/bin/bash
SERVERS="10.10.1.6\n10.15.4.240"
echo -e "${SERVERS}" | while read SERVER ; do
echo -e "${SERVER}"
ssh root@${SERVER} "uptime"
done
Как оказалось проблема в том что ssh съедает stdin в первой итерации цикла.
Для меня это было неожиданно, однако лечится либо опцией -n либо перенаправлением stdin на < /dev/null .
#!/bin/bash
SERVERS="10.10.1.6\n10.15.4.240"
echo -e "${SERVERS}" | while read SERVER ; do
echo -e "${SERVER}"
ssh -n root@${SERVER} "uptime"
ssh root@${SERVER} "uptime" < /dev/null
done