自动化运维程序1:批量自检,更新,配置修改,发布
2016-04-27 22:45
573 查看
原文链接:
/article/7293400.html
##本程序使用到的工具有nc,saltstack,rsync
/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
相关文章推荐
- linux中页缓冲和块缓冲之概念
- linux内存管理--实际分配函数 buffered_rmqueue
- linux内存管理--slab
- Linux下的常用命令
- Linux中的pppd
- Linux下安装JDK、Tomcat以及与Apache整合
- linux基本命令(7)——mv命令
- 关于VMware上Linux克隆后网卡名称修改的操作
- tomcat项目无法发布异常,Could not copy all resources to .........(转)
- centos5.5 yum 安装nginx
- NET实现的DDD、CQRS与微服务架构
- linux内存管理--高端内存映射
- linux内存管理--vmalloc
- linux内存管理--慢速分配内存页 __alloc_pages_slowpath
- ACM刷题之Codeforces———— Little Artem and Grasshopper
- linux内存管理--分配内存页(快速) get_page_from_freelist
- linux内存管理--伙伴系统分配内存准备工作
- __get_free_pages
- linux目录详细介绍
- Redhat 7 忘记root密码如何解决