On Wed, Feb 1, 2012 at 2:53 PM, Stephen Harris lists@spuddy.org wrote:
On Wed, Feb 01, 2012 at 01:07:31PM -0800, Peter Blajev wrote:
echo " server2 server2" | \ while read confLine; do echo "--> $confLine" ssh peter@$confLine ls echo "--> END $confLine" done
The "for" loop in the script above will run twice but the "while" loop below it will run only once.
Any idea what would cause the ssh command to break the while loop?
"ssh" is reading from stdin and passing the data over to the remote machine. You can test this with ssh peter@$confLine 'read x ; echo we got $x'
To stop it doing this, use the "-n" flag ssh -n peter@$confLine ls
This is it. Right on Stephen. Thank you very much. I can't believe I've gone so long without knowing it.
This works for me. I still don't have full understanding of it but I'll do some more reading.
Unfortunately I can't always use the (-n) option. If I wan't to send data through the pipe then the (-n) won't work. For example (on top of my head): mysqldump dB | ssh peter@remoteServer "mysql dB"
In my script I ended up using "ssh -n" when I want to work on the output of remotely ran command and "ssh" without (-n) when I want to send data over ssh to a remote command.
This so far is not breaking the while loop and it seems to be working but it makes me nervous.
Any note will be appreciated.
Thanks again.
-- Peter