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
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