If you have a bash
script with a while
loop that reads from stdin
and uses ssh
inside that loop, the ssh
command will drain all remaining data from stdin
((This is not only true for ssh
but for any command in the loop that reads from stdin
by default)). This means that only the first line of data will be processed.
I encountered this issue yesterday ((I won’t go into details here, since it is for a very specialized purpose. I will say that it involved jot
, ssh
, an aging Solaris based network appliance, and some new fangly XML/Web 2.0)). This website explains why the behavior occurs and how to avoid it.
A flawed method to run commands on multiple systems entails a shell while loop over hostnames, and a Secure Shell SSH connection to each system. However, the default standard input handling of ssh drains the remaining hosts from the while loop