Наткнулся я на то что скрипт запущенный локально — работает, а если его запустить на удалённой машине он вываливается из цикла 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