[工具] Shell 批量实现多个远程服务器执行命令 (多条命令版)

介绍

基本信息

作者:朱明宇
名称:批量实现多个远程服务器执行命令 (多条命令版)
作用:批量实现多个远程服务器执行命令 (多条命令版)

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. myuser=”zhumingyu” #用户名
2. myserver=”eternalcenter.com eternalcentre.com” #服务器名,每个服务器名以空格间隔
3. mycommand=”ls ip a s” #命令,每个命令以空格间隔
4. mysudo=”yes” #是否使用 sudo,可以选择 yes 或者 no

注意

执行脚本的用户要在远程服务器中有同名用户,此用户拥有免密钥 sudo su 权限,且能被本服务器免密钥 ssh

脚本

#!/bin/bash

####################### Separator ########################

myuser="zhumingyu"
myserver="eternalcenter.com eternalcentre.com" #each server is separated by a space
mycommand="ls ip a s" #each command is separated by a space
mysudo="yes" #please choose "yes" or "no"

####################### Separator ########################

mynow=`date +%Y-%m-%d-%H-%s`

if [ $mysudo == 'yes' ];then
        executecommand(){
                ssh -t $1@$2 "sudo -u root su - root -c \"$command\""
        }
        echo "use sudo"
fi

if [ $mysudo == 'no' ];then
        executecommand(){
                ssh -t $1@$2 "$command"
        }
        echo "don't use sudo"
fi

for commands in `echo $mycommand`
do

        for servers in `echo $myserver`
        do
                echo $servers
                echo $commands
        executecommand $myuser $servers $commands
        done

done