Shell腳本自動修改Linux網卡地址、IP地址配置、主機名修改

#!/bin/bash
#Program:
# 修改網卡、修改IP地址 
#History:
# GnahzNib First release 2015/07/14


#定義的一些常量
HOST_NAME='/etc/sysconfig/network'
HOSTNAME=`hostname`
ETH0='/etc/sysconfig/network-scripts/ifcfg-eth0'
RULES='/etc/udev/rules.d/70-persistent-net.rules'
#克隆虛擬機後,獲取MAC地址
A_MAC_eth0=`cat /etc/udev/rules.d/70-persistent-net.rules | grep --color=auto 'eth0' | cut -d '"' -f 8`
A_MAC_Current=`ifconfig | grep --color=auto 'HWaddr' | cut -b 39-55`


#將MAC地址中的字母替換爲小寫
MAC_eth0=`tr '[A-Z]' '[a-z]' <<<"$A_MAC_eth0"`
MAC_Current=`tr '[A-Z]' '[a-z]' <<<"$A_MAC_Current"`


#打印獲取到的MAC地址
echo "(1)對比MAC地址"
echo $MAC_eth0
echo $MAC_Current


#檢查MAC地址是否需要修改
if [ $MAC_eth0 == $MAC_Current ]; then
echo "MAC地址不用修改!"
elif [ $MAC_eth0 != $MAC_Current ]; then
echo "請修改MAC地址爲:${MAC_Current}!"      
        echo "需要修改的地方有${ETH0}以及${RULES}中eth0的MAC地址!"
        #修改ifcfg-eth0中的MAC地址
        echo "修改ifcfg-eth0中的MAC地址爲${MAC_Current}..."
        sed -i "2c HWADDR=${MAC_Current}" ${ETH0}
        #修改後的ifcfg-eth0
        cat ${ETH0} | grep --color=auto "HWADDR"
        echo "ifcfg-eth0中的MAC地址修改完成!"
        #修改70-persistent-net.rules文件,將eth0的MAC地址改爲eth1的
        #查看70-persistent-net.rules的信息
#cat ${RULES} | grep --color=auto "eth0"
        echo "修改70-persistent-net.rules文件"
        sed -i '8,$c SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="'${MAC_Current}'", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' ${RULES}
        #cat ${RULES} | grep --color=auto "eth0"
fi


#修改IP地址
#首先讀取ifcfg-eth0文件
echo "${ETH0}的內容如下:"
cat ${ETH0}


#加入判斷,先判斷該文件中有沒有IP地址
read -p "是否需要修改ifcfg-eth0文件(y/n):" yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
sed -i "5c ONBOOT=yes" ${ETH0}
sed -i "7c BOOTPROTO=static" ${ETH0}
#修改IP地址
read -p "輸入IP地址:" IP
sed -i "7a IPADDR=${IP}" ${ETH0}
sed -i "8a NETMASK=255.255.255.0" ${ETH0}
read -p "輸入GATEWAY地址:" GATE
sed -i "9a GATEWAY=${GATE}" ${ETH0}
#重啓網卡
service network restart
#cat ${ETH0} 
read -p "網絡配置已完成,是否重啓系統(y/n):" yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "將要重啓系統..."
        reboot
elif [ "$yn" == "N" ] || [ "$yn" == "n"  ]; then
        echo "修改MAC地址後需要重啓系統使之生效,請手動重啓系統..."
fi


elif [ "$yn" == "N" ] || [ "$yn" == "n"  ]; then
echo "爲了更好地使用網絡還是修改一下吧!"
fi


#ping www.baidu.com


#修改主機名
read -p "當前主機名爲${HOSTNAME},是否修改(y/n):" yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        read -p "請輸入主機名:" hdp
        sed -i "2c HOSTNAME=${hdp}" ${HOST_NAME}
read -p "主機名修改完成,重啓系統使之生效,是否重啓系統(y/n):" yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
        echo "將要重啓系統..."
        reboot
elif [ "$yn" == "N" ] || [ "$yn" == "n"  ]; then
        echo "主機名修改後需要重啓系統使之生效,請手動重啓系統..."
fi
elif [ "$yn" == "N" ] || [ "$yn" == "n"  ]; then
        echo "主機名沒有修改!"
fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章