本腳本實現功能:
1.解決克隆主機網絡錯誤問題
2.解決非克隆主機網絡問題
#!/bin/bash
#author:zyq
#date:20200401
. /etc/init.d/functions
export export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
id=`id|awk -F " " '{print $1}'|cut -c 5`
if [ $id -eq "0" ];then
echo -e "當前用戶爲root\n"
else
echo -e "執行本腳本必須爲root用戶"
exit 1
fi
sleep 1
ping -c2 -w2 114.114.114.1141 >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "網絡正常"
exit 0
else
echo -e "網絡異常\n"
fi
echo -e "開始檢查網絡...\n"
wait
#IP地址
IP=`hostname -I|cut -d " " -f 1`
#配置文件地址
ifcfg=/etc/sysconfig/network-scripts/ifcfg-eth0
eth0_MAC=`cat /etc/udev/rules.d/70-persistent-net.rules |egrep -v "^#|^$"|awk -F "," '{print $4}'|sed -nr 's/.*"(.*)".*/\1/p'|head -n 1`
MAC=`ifconfig |head -n 1|awk -F " " '{print $5}'`
#忽略大小寫
temp1=$(echo $eth0_MAC | tr [a-z] [A-Z])
temp2=$(echo $MAC | tr [a-z] [A-Z])
#更改MAC地址
function update_MAC(){
#bakcup
echo "正在備份網卡配置文件..."
cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.bak} && cp /etc/udev/rules.d/70-persistent-net.rules{,.bak}
if [ $? -eq 0 ];then
echo "備份成功!"
echo "`ll /etc/sysconfig/network-scripts/ifcfg-eth0.bak`"
echo "`ll /etc/udev/rules.d/70-persistent-net.rules.bak`"
else
echo "備份失敗,終止運行,請檢查錯誤"
exit 1
fi
#update mac
echo "正在更新網卡文件的MAC地址,此操作需要重啓服務器"
read -p "是否繼續執行(1繼續/2不了不了)" num
case $num in
1)
#配置文件地址
ifcfg=/etc/sysconfig/network-scripts/ifcfg-eth0
#截取第二
eth1_MAC=`echo $Real_MAC|cut -d " " -f 2`
#註釋UUID
sed -i 's/UUID/#UUID/g' $ifcfg
#更換MAC地址
sed -i "s#HWADDR=.*#HWADDR=$MAC#g" $ifcfg
#更換IP
local lastnum=`grep IPADDR $ifcfg|cut -d "." -f 4`
local newnum=`expr $lastnum + 10`
sed -i "s#$lastnum#$newnum#g" $ifcfg
#刪除錯誤的配置文件
rm -f /etc/udev/rules.d/70-persistent-net.rules
#重啓服務器
wait
reboot
;;
2)
echo "終止運行"
exit 0
;;
*)
exit 1
esac
}
#不是克隆主機
function network_check(){
#檢查防火牆狀態並關閉
service iptables status >/dev/null 2>&1
[[ $? = 0 ]] && service iptables stop || echo -e "防火牆是關閉狀態\n"
#臨時關閉selinux
setenforce 0
#檢查IP是否衝突
arping -c 3 -f -D $IP
[[ $? != 0 ]] && echo -e "IP地址衝突,請重新設置\n" || echo -e "IP地址無衝突\n"
#添加DNS
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
#獲取網關地址並檢查網關路由
gatway=`sed -nr 's#GATEWAY=(.*)#\1#p' $ifcfg`
ping -c1 -w1 $gatway >/dev/null 2>&1
[[ $? != 0 ]] && echo -e "網關錯誤,請重新設置\n" || echo -e "網關狀態正常\n"
#測試外網連接情況
ping -c1 -w2 www.baidu.com >/dev/null 2>&1
[[ $? = 0 ]] && echo -e "網絡狀態正常\n" || echo -e "網絡錯誤,請重新檢查網卡文件\n"
}
#菜單
read -p "本機是否爲克隆主機(1是/2不是):" num
case "$num" in
1)
echo "正在檢查MAC地址..."
[ "$temp1" == "$temp2" ] && echo "MAC地址正確" || update_MAC
;;
2)
network_check
;;
*)
echo "請輸入正確的數字"
exit 1
;;
esac