不求甚解

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

导航

changeIP.sh一键切换本机ip脚本

Posted on 2021-09-09 20:00  三年三班王小朋  阅读(259)  评论(0编辑  收藏  举报

changeIP.sh

vi changeIP.sh

chmod +x changeIP.sh

#!/bin/bash
export IFCFG=/etc/sysconfig/network-scripts/ifcfg-ens33
PS3="select your workspace of IP: "
select i in "home" "hospital-outer" "hospital-inner" "check"
do
case $i in
    home)
        echo -e  "工作在家,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="192.168.1.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="192.168.1.1"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="192.168.1.1"/g $IFCFG
        systemctl restart network
        break
        ;;
    hospital-outer)
        echo "杏花岭中心医院外网,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="192.168.3.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="192.168.3.1"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="192.168.3.1"/g $IFCFG
        systemctl restart network
        break
        ;;
    hospital-inner)
        echo "杏花岭中心医院内网,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="111.111.112.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="111.111.112.254"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="111.111.110.250"/g $IFCFG
        systemctl restart network
        break
        ;;
    check)
        echo "查看ip如下:"
        break
    ;;
    *)
    echo -e "\033[35mUsage:{$0 1|2|3} \033[0m"
    ;;
esac
done
cat $IFCFG|grep -E '^IPADDR|^PREFIX|^GATEWAY|^DNS'

 改进changeIP.sh

#!/bin/bash

export IFCFG=/etc/sysconfig/network-scripts/ifcfg-ens33

checkip(){
echo $IPADDR|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
#IP地址必须为全数字
if [ $? -ne 0 ];then
echo "输入ip非法!"
exit
fi
for  ((i=1;i<=4;i++))
do
num=`echo $IPADDR|cut -d. -f$i`
##每个数值必须在0-255之间
if [[ $num -gt 255 || $num -lt 0 ]];then
echo "输入ip数值大小不符合!"
exit
fi
done
}
checkprefix(){
if [[ $1 -gt 32 || $1 -lt 0 ]];then
echo "输入ip数值大小不符合!"
exit
fi
}

PS3="select your workspace of IP: "
select i in "home" "hospital-outer" "hospital-inner" "user-defined" "check"
do
case $i in
    home)
        echo -e  "工作在家,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="192.168.1.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="192.168.1.1"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="192.168.1.1"/g $IFCFG
        break
        ;;
    hospital-outer)
        echo "杏花岭中心医院外网,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="192.168.3.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="192.168.3.1"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="192.168.3.1"/g $IFCFG
        break
        ;;
    hospital-inner)
        echo "杏花岭中心医院内网,设置ip如下:"
        sed -r -i s/^IPADDR=.*$/IPADDR="111.111.112.48"/g $IFCFG
        sed -r -i s/^PREFIX=.*$/PREFIX="24"/g $IFCFG
        sed -r -i s/^GATEWAY=.*$/GATEWAY="111.111.112.254"/g $IFCFG
        sed -r -i s/^DNS=.*$/DNS="111.111.110.250"/g $IFCFG
        break
        ;;
    user-defined)
        echo "用户自定义,ip信息"
        read -p "请输入ip地址:" IPADDR
        checkip $IPADDR
        sed -r -i s/^IPADDR=.*$/IPADDR="$IPADDR"/g $IFCFG
        read -p "请输入掩码:" PREFIX
        checkprefix $PREFIX
        sed -r -i s/^PREFIX=.*$/PREFIX="$PREFIX"/g $IFCFG
        read -p "请输入网关:" IPADDR
        checkip $GATEWAY
        sed -r -i s/^GATEWAY=.*$/GATEWAY="$GATEWAY"/g $IFCFG
        read -p "请输入域名解析:" IPADDR
        checkip $DNS
        sed -r -i s/^IPADDR=.*$/IPADDR="$DNS"/g $IFCFG
        break
        ;;
    check)
        echo "查看ip如下:"
        break
    ;;
    *)
        echo -e "\033[35mUsage:{$0 1|2|3|4} \033[0m"
    ;;
esac
done
cat $IFCFG|grep -E '^IPADDR|^PREFIX|^GATEWAY|^DNS'


read -p "是否重启应用ip设置(yes/no)?" INPUT
while true;do
case $INPUT in
y|yes)
        echo "you input is YES"
        systemctl restart network
        break
;;
n|no)
        echo "you input is NO"
        break
;;
*)
        echo -n "Input ERROR,please input yes or no?"
        read INPUT
;;
esac
done