shell修改ip、網關、DNS

以centos7.6爲例

#!/bin/bash
#__author__ : lalone

# @l_ip:ip
# @l_network:掩碼
# @l_gateway:網關
# @l_dns_1:DNS
# @l_dns_2:DNS
l_ip="10.10.50.4"
l_network="255.255.0.0"
l_gateway="10.10.200.1"
l_dns_1="114.114.114.114"
#l_dns_2="8.8.8.8"
l_dns_2=""

if [ $# -eq 4 ];
then
        l_ip=$1
        l_network=$2
        l_gateway=$3
        l_dns_1=$4
elif [ $# -eq 5 ];
then
        l_ip=$1
        l_network=$2
        l_gateway=$3
        l_dns_1=$4
        l_dns_2=$5
else
        echo "輸入參數有誤,請重新輸入。"
        echo "./ip.sh ip 掩碼 網關 DNS1 [DNS2可選]"
        echo "eg: ./ip.sh 10.10.50.4 255.225.0.0 10.10.200.1 114.114.114.114 [8.8.8.8]"
fi

# 修改IP地址
# /etc/sysconfig/network-scripts/ifcfg-eth0
function changeIP(){
        file="/etc/sysconfig/network-scripts/ifcfg-eth0"
        # 設置爲靜態
        if grep -q "BOOTPROTO" $file;
        then
                sed -i s/^BOOTPROTO.*/BOOTPROTO=\'static\'/ $file
        else
                echo "BOOTPROTO=static" >> $file
        fi
        # 設置IP
        if grep -q "IPADDR" $file;
        then
                sed -i s/^IPADDR.*/IPADDR=${1}/ $file
        else
                echo "IPADDR=${1}" >> $file
        fi
        # 設置掩碼
        if grep -q "NETMASK" $file;
        then
                sed -i s/^NETMASK.*/NETMASK=${2}/ $file
        else
                echo "NETMASK=${2}" >> $file
        fi
        echo "IP更改成功。"
}

if [ ! -z "$l_ip" ] && [ ! -z "$l_network" ];
then
        changeIP $l_ip $l_network
else
        echo "IP或掩碼配置爲空,未更改。"
fi

# 修改默認網關
# /etc/sysconfig/network
function changeNetwork(){
        file="/etc/sysconfig/network"
        if grep -q "GATEWAY" $file;
        then
                sed -i s/^GATEWAY.*/GATEWAY=${1}/ $file
        else
                echo "GATEWAY=${1}" >> $file
        fi
        echo "網關更改成功"
}

if [ ! -z "$l_gateway" ];
then
        changeNetwork $l_gateway
else
        echo "網關配置爲空,未更改。"
fi

# 修改DNS
# /etc/resolv.conf
function changeDNS(){
        file="/etc/resolv.conf"
        echo "# Generated by NetworkManager" > $file
        #echo `cat $file`
        if [ $# -eq 2 ];
        then
                echo "nameserver ${1}" >> $file
                echo "nameserver ${2}" >> $file
                echo "DNS更改成功"
        elif [ $# -eq 1 ];
        then
                echo "nameserver ${1}" >> $file
                echo "DNS更改成功"
        else
                echo "DNS更改失敗"
        fi
        #echo `cat $file`
}

if [ ! -z "$l_dns_1" ] && [ ! -z "$l_dns_2" ];
then
        changeDNS $l_dns_1 $l_dns_2
elif [ ! -z "$l_dns_1" ] && [ -z "$l_dns_2" ];
then
        changeDNS $l_dns_1
elif [ -z "$l_dns_1" ] && [ ! -z "$l_dns_2" ];
then
        changeDNS $l_dns_2
else
        echo "DNS配置爲空,未更改。"
fi

/etc/init.d/network restart

注意:實際應用過程中根據自己系統類型版本,修改相應的file指定文件名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章