shell脚本-更改服务器IP地址

Posted 互联网老辛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本-更改服务器IP地址相关的知识,希望对你有一定的参考价值。

前言

更换I服务器IP地址脚本

脚本源码

## 定义常量
ETH_NAME="ifcfg-ens33"
ETH_MASK="255.255.255.0"
ETH_GW="10.10.10.1"
ETH_BAK="/data/backup/`date +%F`"
ETH_DIR="/etc/sysconfig/network-scripts/"

cd $ETH_DIR 
if [ ! -d $ETH_BAK ];then
    mkdir -p $ETH_BAK
fi
\\cp $ETH_NAME $ETH_BAK
while true
do
## 按要求输入IP地址
    read -p "Please Retry Input IPaddr,Example 1.1.1.1:" ETH_IP
    echo $ETH_IP|grep -wE "^([0-9]1,3\\.)3[0-9]1,3$"
    if [ $? -eq 0 ];then
    ## 四段IP地址
         IP1=`echo $ETH_IP|awk -F. 'print $1'`
         IP2=`echo $ETH_IP|awk -F. 'print $2'`
         IP3=`echo $ETH_IP|awk -F. 'print $3'`
         IP4=`echo $ETH_IP|awk -F. 'print $4'`
         ##四段IP地址需要符合要求
         if [ $IP1 -gt 0 -a $IP1 -lt 255 -a $IP2 -ge 0 -a $IP2 -le 255 -a $IP3 -ge 0 -a $IP3 -le 255 -a $IP4 -ge 0 -a $IP4 -le 255 ];then
             ping -c 3 $ETH_IP >/dev/null
     ## 若可以ping通则正常
             if [ $? -ne 0 ];then
                 echo $ETH_IP
                 break
             else
                  echo "The $ETH_IP already config Server,Please Retry other IPaddr."
             fi
         fi
    fi
    echo
done
## DHCP是否开启
grep "dhcp" $ETH_NAME
if [ $? -eq 0 ];then
    sed -i 's/dhcp/static/g' $ETH_NAME
    cat>>$ETH_NAME <<EOF
IPADDR=$ETH_IP
NETMASK=$ETH_MASK
GATEWAY=$ETH_GW
EOF
    echo "---------------"
    cat $ETH_NAME
    ## 服务是否启动
    ## 若服务器没有启动,则先启动
    read -p "Please Ensure Restart Network Service. Yes or No ?" INPUT
    if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y"  ];then
        service network restart
    else
        \\cp $ETH_BAK/$ETH_NAME $ETH_DIR/
        cat $ETH_NAME
    fi
else
    cd $ETH_DIR
    ## 是否更改服务器IP地址
    read -p "The $ETH_NAME IPaddr is Static,Plesae ensure change Server IP: yes or no? " INPUT
    #用户输入Y确认是否修改
    if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y" ];then
        sed -i "s/IPADDR=.*/IPADDR=$ETH_IP/g" $ETH_NAME
        cat $ETH_NAME
        read -p "Please Ensure Restart Network Service. Yes or No ?" INPUT
        if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y"  ];then
            service network restart
        else
            \\cp $ETH_BAK/$ETH_NAME $ETH_DIR/
            cat $ETH_NAME
        fi
     else
        exit 0
        fi
fi

总结

所有脚本一定要遵循演化规则,从小到大,从简单到复杂。

以上是关于shell脚本-更改服务器IP地址的主要内容,如果未能解决你的问题,请参考以下文章

一个shell的面试题

Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址

shell脚本和任务基础

python运维----检测主机IP ping不通则发邮件

一键获取 Linux 服务器网络 IP 地址 终极版 Shell 脚本

shell脚本实现批量解析域名IP地址(支持多DNS)