linux 远程执行本地脚本的命令

本文介绍了一种利用SSH命令批量在多台远程服务器上执行相同脚本的方法,通过简单的shell脚本实现对不同服务器的不同端口进行操作,并确保脚本的安全执行。
背景:
公司远程N台机器需要执行同一脚本,确认脚本对所有需要执行的机器都有效安全,可以使用如下命令。

ch_sudo.sh为需要执行的脚本名称
ssh root@服务器IP地址 "bash" < ch_sudo.sh

如果机器很多,可以写一个循环脚本,对所有IP地址的机器循环执行。


ssh test@ip sh /root/test.sh

参考:http://blog.csdn.net/shangzhiliang_2008/article/details/8602756

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 $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 $user@$ip "remote_cmd"
done


后记
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值