您的位置:首页 > 运维架构

自动化运维程序1:批量自检,更新,配置修改,发布

2016-04-27 22:45 573 查看
原文链接:
/article/7293400.html

#!/bin/bash

IP_LIST=(
192.168.1.100
192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
)

#new server ip

CMD_LIST=(
检查运行状态
防火墙关
关闭游戏程序
更新服务端
开启游戏程序
添加白名单
开放防火墙
)

cat /dev/null > tmp.log

function check_status(){
touch 3.log
for ip in ${IP_LIST[@]}
do
nc -z -v -w 1 $ip 8000 >> 3.log
done
num=$(cat 3.log | grep succeeded | wc -l)
echo "
服务器一共 ${#IP_LIST[@]} 台
开启状态有 $num 台
关闭状态有 $((${#IP_LIST[@]}-$num)) 台
"
rm -rf 3.log
}

function mulu(){
sep=":"
i=0
while (( i < ${#CMD_LIST[@]} ));do
echo "$((i+1))$sep${CMD_LIST[$i]}"
let "i=(i+1)"
done
echo -e  "\033[31;1m
all:依次执行上述操作
m:查看操作目录
q:退出程序
===================================
\033[;0m"
}

echo -e  "\033[31;1m==== 本程序用来批量执行以下操作 ====\033[;0m"
mulu

cmd=""
flag=1
while [[ $flag == 1 ]];do
if [[ -z $n ]] || [[ $n == 0 ]];then
read -p "请输入要执行的操作代号(m查看菜单): " n
fi

if [[ $(seq ${#CMD_LIST[@]}) =~ $n ]]
then
echo ;
echo -e -n ">>>正在执行的操作是:\033[33;1m${CMD_LIST[$((n-1))]}\033[;0m,"
read -p "确认开始吗?(yes/no)" c
#echo ">>>正在执行的操作是:${CMD_LIST[$((n-1))]},确认开始吗?(yes/no)"
if [[ $c == "y" ]] || [[ $c == "yes" ]]; then
case $n in
1):
check_status;;
2):
cmd="/sbin/iptables-restore /etc/sysconfig/iptables.killrule"
;;
3):
cmd="Control stop";;
4):
/root/ios/rsyncUpdate.sh
;;
5):
cmd="Control start";;
6):
read -p "请输入要添加白名单的IP:" bip
cmd="/sbin/iptables -I INPUT 2 -s $bip -j ACCEPT"
;;
7):
cmd="/sbin/iptables-restore /etc/sysconfig/iptables.startrule";;
esac
for ip in ${IP_LIST[@]}
do
if [ ! -z "$cmd" ]; then
salt $ip cmd.run "$cmd" | tee -a tmp.log 2>&1
#echo $cmd
#echo "salt $ip cmd.run '$cmd' | tee -a admin.log" >> 2.log
#echo $cmd
#echo $ip
#else
#pass
fi
done
fi

if [ $? == 0 ]; then
echo "执行成功"
else
echo "执行出错,error id:$?"
fi
read -p "请输入继续要执行的操作代号: " n
continue
else
case $n in
m):
mulu
let "n=0"
let "flag=1"
;;

q):
break
;;

all):
echo "^^^^^ 即将开始顺序执行以上操作 ^^^^^"
for ip in ${IP_LIST[@]}
do
echo ">>>>> 正在操作:$ip <<<<<"
salt $ip cmd.run 'iptables-restore /etc/sysconfig/iptables.killrule'
echo "防火墙已关"
sleep 1
salt $ip cmd.run 'Control stop'
echo "程序已经关闭"
sleep 1
rsync -vacb --backup-dir=/db_backup/$BACKUP_DIR --progress --exclude-from=/root/exclude.list --password-file=/etc/rsyncd.secrets /home/game/wh rsync@$ip::wh/
salt $ip cmd.run '/home/game/wh.sh'
echo "服务端已更新完毕"
#sleep 1
salt $ip cmd.run 'Control start'
echo "程序已经开启,GM开服测试"
sleep 1
done
break
;;

*):
read -p "输入错误,请重新输入:" n
let "flag=1"
;;
esac
fi

done

echo "OK"

##本程序使用到的工具有nc,saltstack,rsync
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: