执行远程命令
格式: 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’ 单引号不能使用变量
❯ name=ppd❯ echo $nameppd# "" 先解析本地变量,再去远程执行❯ ssh -p 2222 bae@192.168.88.52 "echo $name"ppd# '' 不解析本地变量,去远程执行❯ ssh -p 2222 bae@192.168.88.52 'echo $name'空❯ ssh -p 2222 bae@192.168.88.52 'name=333;echo $name'333# eval 是二次处理,即使 '' 也会解析,然后去远程执行❯ eval ssh -p 2222 bae@192.168.88.52 'name=333;echo $name'ppd
在远程服务器执行本地脚本
ssh xxx@xxx < test.sh
或
ssh xxx@xxx < <<
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
调用远程服务器中的别名命令
ssh xx@xxx /bin/bash -ic ‘lxgkp’
或者
ssh xx@xx “shopt -s expand_aliases ; source /home/bae/.bashrc ; eval lxgp kapi-web”
