Linux Shell远程执行命令

来自linux中国网wiki
Evan讨论 | 贡献2021年10月13日 (三) 03:46的版本 →‎R
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

command

例:在目标服务器上执行批量的命令。

#!/bin/bash
ssh [email protected] < < remotessh
killall -9 java
cd /data/apache-tomcat-7.0.53/webapps/
exit
remotessh
远程执行的内容在"< < remotessh " 至" remotessh "之间,在远程机器上的操作就位于其中,注意的点:<< remotessh,ssh后直到遇到remotessh这样的内容结束,remotessh可以随便修改成其他形式。在结束前,加exit退出远程节点 如果不想日志文件在本机出现可以修改配置

ssh [email protected] > /dev/null 2>&1 < < remotessh
ssh的-t参数
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全
命令格式

ssh -t -p $port u s e r @ user@ user@ip ‘cmd’
示例脚本

#!/bin/bash

#变量定义
ip_array=(“192.168.1.1” “192.168.1.2” “192.168.1.3”)
user=“test1”
remote_cmd="/home/test/1.sh"

#本地通过ssh执行远程服务器的脚本
for ip in ${ip_array[*]}
do
if [ $ip = “192.168.1.1” ]; then
port=“7777”
else
port=“22”
fi
ssh -t -p $port u s e r @ user@ user@ip “remote_cmd”
done
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!

例:查看远程服务器的cpu信息
假设远程服务器IP是192.168.110.34
ssh -l www-online 192.168.110.34 “cat /proc/cpuinfo”

例:执行远程服务器的sh文件
首先在远程服务器的/home/www-online/下创建一个uptimelog.sh脚本

#!/bin/bash

uptime >> ‘uptime.log’

exit 0
使用chmod增加可执行权限

chmod u+x uptimelog.sh
在本地调用远程的uptimelog.sh

ssh -l www-online 192.168.110.34 “/home/www-online/uptimelog.sh”

R

Linux Shell远程执行命令 单行及多行命令