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:
- I keep getting prompted for a password. How can I have it not prompt me and enter the password automatically?
- How can I execute multiple commands?
- You should use key based authentification, possibly coupled with - ssh-agentto remember key passphrase.
- You can invoke- sh -cas the command, and pass it a string containing the list of command to execute.- sshinvoke 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"
Use ssh-agent to set up authentication for all commands. Or put your multiple commands into a single shell script.
- Send a list of commands to the remote shell. Possible solutions: - use - ", escape line breaks to format code and end each substatement with- ;.
 Disadvantage:- "should not be used inside the command list.- ssh user@ip "\ echo 'Hallo sir, how are you doing?';\ whoami;\ cd /;\ ls\ "
- use - 'and format code with regular line breaks.
 Disadvantage:- 'should not be used inside the command list.- ssh user@ip ' echo "Hallo sir, how are you doing?" whoami cd / ls '
 
Note: using " or ' inside the respective statements will not necessarily result in an error. Though you may get unsuspected results.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论