在多行上写SSH命令

时间:2015-08-18 21:13:33

标签: bash shell ssh remote-access

我正在尝试远程登录shell并在shell上执行一堆命令。 但为了使其更具可读性,我想将我的代码放在多行上。我该怎么做?

ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; ....  "

谢谢!

3 个答案:

答案 0 :(得分:6)

ssh实际上只是将字符串传递给远程主机。这个字符串被赋予一个shell,它应该解释它(用户的登录shell,通常类似于bash)。因此,无论您想要执行什么都需要由远程登录shell解释,这就是您必须坚持的整个规则。

您确实可以在命令字符串中使用换行符:

ssh alfe@sweethome "
  ls /home/alfe/whatever
  ping foreignhost
  date
  rm foobar
"

答案 1 :(得分:5)

您可以使用Here Documents的{​​{1}}功能。 它就像:

bash

EOF标志着输入的结束。

有关详细信息:请使用ssh <remote-host> bash <<EOF echo first command echo second command EOF 并搜索man bash

编辑:唯一需要注意的是,使用变量可能很棘手,您必须转义Here Documents以保护它们在远程主机而不是本地shell上进行评估。像$一样。否则使用从bash运行的所有内容并使用\$HOSTNAME

答案 2 :(得分:2)

您可以在以下示例中执行此操作。

ssh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'