执行远程命令

格式: ssh xxx@xxxx.com “<命令,多条逗号分隔>”

ssh xx@xx “pwd”

多条命令

逗号分隔 或 引号包裹的多行命令
ssh xx@xx “pwd; ls”

ssh xx@xx “pwd
echo ‘3333’
ls”

ssh xx@xx ‘pwd
echo “3333”
ls’

交互命令

如果是需要交互的命令需要使用 -t 参数分配一个 TTY

ssh -t xxx@xxx “top”

传递本地变量

name=ppd
ssh -t xxx@xxx “echo $name”
ssh -t xxx@xxx bash -c “‘echo $name’”

ssh -t xxx@xxx ‘echo $name’ 单引号不能使用变量

  1. name=ppd
  2. echo $name
  3. ppd
  4. # "" 先解析本地变量,再去远程执行
  5. ssh -p 2222 bae@192.168.88.52 "echo $name"
  6. ppd
  7. # '' 不解析本地变量,去远程执行
  8. ssh -p 2222 bae@192.168.88.52 'echo $name'
  9. ssh -p 2222 bae@192.168.88.52 'name=333;echo $name'
  10. 333
  11. # eval 是二次处理,即使 '' 也会解析,然后去远程执行
  12. eval ssh -p 2222 bae@192.168.88.52 'name=333;echo $name'
  13. ppd

在远程服务器执行本地脚本

ssh xxx@xxx < test.sh

ssh xxx@xxx < <<ls
pwd
EOL;

传递参数

使用 bash -s 传递

ssh xxx@xxx ‘bash -s ‘ < test.sh helloword

执行远程服务器上的脚本

ssh xxx@xxx “/path/test.sh”

传递本地参数

ssh xxx@xxx /path/test.sh helloword

https://www.cnblogs.com/youngerger/p/9104144.html

调用远程服务器中的别名命令

ssh xx@xxx /bin/bash -ic ‘lxgkp’

或者

ssh xx@xx “shopt -s expand_aliases ; source /home/bae/.bashrc ; eval lxgp kapi-web”