不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

changeServer.sh一键切换服务器脚本

Posted on 2021-10-06 00:21  三年三班王小朋  阅读(124)  评论(0编辑  收藏  举报

直接看改进版2.0

切换服务器,免密登录
vi changeServer.sh

#!/bin/bash
#authe by wangxp
export IFCFG=/etc/sysconfig/network-scripts/ifcfg-ens33

function checkip(){
IPADDR=`ip address|grep 192.168.106|awk '{print $2}'|cut -d/ -f1`
#IP地址必须为全数字
echo $IPADDR|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
if [ $? -ne 0 ];then
echo "输入ip非法!"
exit
fi
if [[ $1 == $IPADDR ]];then
echo "已经登录目标服务器,请勿重复登录!"
exit 1
fi
}

#免密登录。先ssh-keygen -t rsa 生产公私钥,然后ssh-copy-id把公钥复制到远程机器中
function except_passwd(){
if  [[ ! -f /root/.ssh/id_rsa || ! -f /root/.ssh/id_rsa.pub ]]
then
echo "ssh-keygen -t rsa"
ssh-keygen -t rsa
fi
/usr/bin/ssh-copy-id root@$1 > /dev/null 2>&1
ssh root@$1
}

PS3="选择你要登录的服务器: "
select i in "云诊所-主应用" "云MIS-主应用" "云诊所-主数据库" "云诊所-备数据库" "云MIS-主数据库" "云MIS-备数据库" "图片服务器"
do
case $i in
    "云诊所-主应用")
        IPTAR=192.168.106.6
        checkip $IPTAR
        echo -e  "登录...云诊所-主应用:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    "云MIS-主应用")
        IPTAR=192.168.106.7
        checkip $IPTAR
        echo -e  "登录...云MIS-主应用:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    "云MIS-主数据库")
        IPTAR=192.168.106.1
        checkip $IPTAR
        echo -e  "登录...云MIS-主数据库:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    "云诊所-主数据库")
        IPTAR=192.168.106.2
        checkip $IPTAR
        echo -e  "登录...云诊所-主数据库:$IPTAR"
        except_passwd 192.168.106.2
        break
        ;;
    "云MIS-备数据库")
        IPTAR=192.168.106.3
        checkip $IPTAR
        echo -e  "登录...云MIS-备数据库:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    "云诊所-备数据库")
        IPTAR=192.168.106.4
        checkip $IPTAR
        echo -e  "登录...云诊所-备数据库:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    "图片服务器")
        IPTAR=192.168.106.5
        checkip $IPTAR
        echo -e  "登录...图片服务器:$IPTAR"
        except_passwd $IPTAR
        break
        ;;
    *)
        echo -e "\033[35mUsage:{$0 1|2|3|4|5|6|7...} \033[0m"
    ;;
esac
done

切换服务器登录(改进)
vi changeServer.sh

#!/bin/bash
#authe by wangxp

#删除错误
stty erase ^H #服务器名 export SERVERS
=(云诊所应用-主 云诊所应用-备 云MIS应用-主 云MIS应用-备 云诊所数据库-主 云诊所数据库-备 云MIS数据库-主 云MIS数>据库-备 负载均衡服务器 静态资源服务器) #对应服务器IP,务必保证一一对应,excel倒置复制即可 export IPS=(172.31.0.5 172.31.0.9 172.31.0.8 172.31.0.15 172.31.0.11 172.31.0.4 172.31.0.10 172.31.0.3 172.31.0.16 172.31.0.7) #检查ip,是否已登录 function checkip(){ IPADDR=`ip -4 address |grep 'inet'|grep -v '127.0.0.1'|awk '{print $2}'|cut -d/ -f1` IP_N=`echo "$IPADDR"|wc -l` for (( n=1; n<=$IP_N ; n++ )) do IP=`echo "$IPADDR"|awk "NR==$n"` if [[ $1 == $IP ]];then echo -e "已经登录目标服务器,请勿重复登录!IP:$IP" exit 1 fi done /bin/ping -c 1 $1 > /dev/null 2>&1 if [ $? -ne 0 ] then echo "IP:$1服务器不通,退出登录" exit 1 fi } #免密登录。先ssh-keygen -t rsa 生产公私钥,然后ssh-copy-id把公钥复制到远程机器中 function except_passwd(){ if [[ ! -f /root/.ssh/id_rsa || ! -f /root/.ssh/id_rsa.pub ]] then echo "ssh-keygen -t rsa" ssh-keygen -t rsa fi /usr/bin/ssh-copy-id root@$1 > /dev/null 2>&1 ssh root@$1 } #查看所有服务器和对应ip if [ "$1" == "all" ] then for (( n=1;n<=${#SERVERS[*]};n++ )) do echo -e "$n) ${SERVERS[$n-1]}\tIP:${IPS[$n-1]}" done exit 0 fi PS3="选择你要登录的服务器: " select i in ${SERVERS[@]} do for (( k=0;k<=${#SERVERS[*]}-1;k++ )) do if test "$i" == ${SERVERS[k]} then checkip ${IPS[k]} echo -e "登录...\E[42;37;5m$i\E[0m IP:${IPS[k]}" except_passwd ${IPS[k]} exit 0 fi done echo "你输入的服务器不存在!" break done