Matt Matt - 6 months ago 9
Bash Question

Execute a list of Unix commands using ssh

I want to run the same set of Unix commands on multiple machines. I am aware of ssh and something like the below. I want to write a shell script to do this. I have access to bash and ksh and I'm on Linux Red Hat 5.

ssh root@ip "echo \$HOME"


However, I have 2 questions:


  1. I keep getting prompted for a password. How can I have it not prompt me and enter the password automatically?

  2. How can I execute multiple commands?


Answer
  1. You should use key based authentification, possibly coupled with ssh-agent to remember key passphrase.

  2. You can invoke sh -c as the command, and pass it a string containing the list of command to execute. ssh invoke a shell on the remote machine, so you can pass a list of command as a string.

For example:

$ ssh user@ip "echo 'Hello world'; whoami; cd / ; ls"