ssh批量操作助手

功能描述 集群批量执行脚本

假设有三台服务器 hadoop181,hadoop182,hadoop183, 我需要从hadoop181 去执行hadoop182或者hadoop183上的命令, 这时候可以使用这个小脚本

#!/bin/bash

function printhelp(){
		echo "============================== xssh help info ====================================="
		echo "|| using e.g :                                                                   ||"
		echo "||    format: [xssh] [-t] [subcommand]                                           ||"
		echo "||     e.g.1:  xssh -t sudo mkdir -p /home/hadoop/sbin/                          ||"
		echo "||     e.g.2:  xssh ll -l /home/hadoop/                                          ||"
		echo "||                                                                               ||"
		echo "|| using option :                                                                ||"
		echo "||    [-t] : open a new TTY terminal to execute command                          ||"
		echo "||                                                                               ||"
		echo "|| using subcommand :                                                            ||"
		echo "||    [subcommand] : same like using a command on Linux                          ||"
		echo "||                                                                               ||"
		echo "||                                                                               ||"
		echo "||*************************** attention please  *********************************||"
		echo "||                                                                               ||"
		echo "||             You need to specify -t when using sudo in subcommands             ||"
		echo "||                                                                               ||"
		echo "|| the variable hostnames in the source file is used to set the target host list ||"
		echo "================================ xssh help info ==================================="
		exit 0;
}

#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
	printhelp
fi

subcommand=""
user=`whoami`

# 需要操作的主机列表, 通过空格隔开
hostnames=(hadoop181 hadoop182 hadoop183)

# 3. 判断是否需要新启动一个tty窗口
case $1 in 
	"--help"| "-h" ){
		printhelp
	};;
	"-t"){
		shift
		echo "[DEBUG] need to open new tty terminal to execute command "
		subcommand="-t"
	};;
	*){
		echo "[DEBUG] 1 command is :$*"
		echo "[DEBUG] 1 command is :$*"
	};;
esac

#4 循环远程执行指令
for host in "${hostnames[@]}"
do
	echo "[DEBUG] ssh to $host to execute commands [$subcommand $@] "
	ssh $user@$host $subcommand "$@"
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值