linux ssh 远程执行命令常用技巧
1. 远程执行命令
ssh user@192.168.119.1 "pwd"
2. 执行需要交互的命令
可以通过 -t 参数显式的告诉 ssh,我们需要一个 TTY 远程 shell 进行交互,这样会保持登录状态,直到你退出需要交互的命令。
ssh -t user@192.168.119.1 "top"
3. 执行多行命令
ssh 192.168.119.1 "ls
pwd
"
或
ssh 192.168.119.1 "ls;pwd"
4. 执行本地的脚本
ssh 192.168.119.191 bash < local.sh
5. 执行本地带参数的脚本
ssh 192.168.119.191 bash -s < local.sh myname
6. 执行远程服务器上的脚本
ssh 192.168.119.191 "sh /root/local.sh myname"
7. 传递本地变量
# 本地脚本
name=mike;ssh 192.168.119.191 bash -s < local.sh ${name}
# 远程脚本
name=mike;ssh 192.168.119.191 "sh /root/local.sh ${name}"
8. 使用远程服务器上的变量
- 如果在远程服务器上定义并使用变量,需要在所有的$前加上转换义字符().
- 这是因为我们将远程执行的命令和变量赋值语句放在了 SSH 的输入重定向中,在这种情况下,脚本将先在本地 Shell 中执行,而不是远程机器上。也就是说变量赋值语句其实不会在远程主机上去执行,而是等到ssh命令完成后,回到本地主机上后去执行。
# 不加(\)会引用不到变量
ssh 192.168.119.191 "myname=mike;echo \$myname"
- 使用for循环时也要注意
ssh 192.168.119.191 "cd /data && for f in \$(ls *.zip);do echo \$f;done"