开发者

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?


  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"


Use ssh-agent to set up authentication for all commands. Or put your multiple commands into a single shell script.


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜