用过Centos7的同学都会发现上面的网卡命名规则是不规范的,关于习惯了之前的eth或em的命名难免想要修改回去。
最近公司在定制Centos7时就提了这个需求,于是就写了个脚本在安装体系时运行脚本主动修改网卡称号。
#!/bin/bash # Script Name:NICs-Setting.sh # Support OS Type: RHEL/CentOS 5.x/6.x/7.x function V5() { #local b0=-1 #local c0 #sed -i \'/HWADDR/d\' `grep HWADDR -l /etc/sysconfig/network-scripts/ifcfg-eth?` [ ! -d /etc/sysconfig/network-scripts/NIC_Backup ] && mkdir /etc/sysconfig/network-scripts/NIC_Backup b0=-1 cat /proc/net/dev |grep \':\' | grep -v \'lo\' | grep -v \'bond\' |grep -v \'sit0\' | cut -d: -f1 |sort > /tmp/net_name.txt while read line do c0=$line b0=`expr $b0 + 1` cp -f /etc/sysconfig/network-scripts/ifcfg-$c0 /etc/sysconfig/network-scripts/NIC_Backup &> /dev/null mv -f /etc/sysconfig/network-scripts/ifcfg-$c0 /etc/sysconfig/network-scripts/ifcfg-eth$b0 &> /dev/null sed -i \'$a BOOTPROTO=static\' /etc/sysconfig/network-scripts/ifcfg-eth$b0 sed -i \'$a NAME=eth\'$b0\'\' /etc/sysconfig/network-scripts/ifcfg-eth$b0 sed -i \'/HWADDR/d\' `grep HWADDR -l /etc/sysconfig/network-scripts/ifcfg-eth$b0` done $V5NetRuleFile local number=0 lshw -C network | grep \"bus info\" | awk -F : \'{print $3\":\"$4}\' | sort | while read line do c0=$line echo \'ACTION==\"add\", SUBSYSTEM==\"net\", BUS==\"pci\", ID==\"0000:\'$c0\'\", NAME=\"eth\'$number\'\"\' >>/etc/udev/rules.d/60-net.rules let number++ done # } function V6() { chmod a-x $V6WriteRuleCmd local number=0 cp $V6NetRuleFile $V6NetRuleFile-`date +%Y-%m-%d-%R` > $V6NetRuleFile lshw -C network | grep \"bus info\" | awk -F : \'{print $3\":\"$4}\' | sort | while read line do echo \"SUBSYSTEMS==\"pci\", ACTION==\"add\", DRIVERS==\"?*\", KERNELS==\"0000:$line\", NAME=\"eth$number\"\" >> $V6NetRuleFile let number++ done } function V7() { [ ! -d /etc/sysconfig/network-scripts/NIC_Backup ] && mkdir /etc/sysconfig/network-scripts/NIC_Backup b0=-1 cat /proc/net/dev |grep \':\' | grep -v \'lo\' | grep -v \'bond\' | cut -d: -f1 |sort > /tmp/net_name.txt while read line do c0=$line b0=`expr $b0 + 1` cp -f /etc/sysconfig/network-scripts/ifcfg-$c0 /etc/sysconfig/network-scripts/NIC_Backup &> /dev/null mv -f /etc/sysconfig/network-scripts/ifcfg-$c0 /etc/sysconfig/network-scripts/ifcfg-eth$b0 &> /dev/null sed -i \'s/dhcp/static/g\' /etc/sysconfig/network-scripts/ifcfg-eth$b0 sed -i \'/IPV6/d\' /etc/sysconfig/network-scripts/ifcfg-eth$b0 sed -i \'s/\'$c0\'/eth\'$b0\'/g\' /etc/sysconfig/network-scripts/ifcfg-eth$b0 done /dev/null local number=0 cp $V7NetRuleFile $V7NetRuleFile-`date +%Y-%m-%d-%R` > $V7NetRuleFile lshw -C network | grep \"bus info\" | awk -F : \'{print $3\":\"$4}\' | sort | while read line do echo \"SUBSYSTEMS==\"pci\", ACTION==\"add\", DRIVERS==\"?*\", KERNELS==\"0000:$line\", NAME=\"eth$number\"\" >>$V7NetRuleFile let number++ done } # Main Start here. # PACKAGE1=redhat-lsb V7PACKAGE=redhat-lsb-core PACKAGE2=pciutils V5NetRuleFile=/etc/udev/rules.d/60-net.rules V6NetRuleFile=/etc/udev/rules.d/70-persistent-net.rules V7NetRuleFile=/etc/udev/rules.d/70-persistent-net.rules V6WriteRuleCmd=/lib/udev/write_net_rules ErrUID=65 ErrPackage=66 ErrOSType=67 ErrOSVersion=68 OSType=`lsb_release -i | grep -E \'RedHat|CentOS\'` OSRelease=`lsb_release -r | awk \'{print $2}\'` if [ $UID -ne 0 ]; then echo \"The script must be execute by root\" echo \"Exiting now......\" exit $ErrUID fi if [ \"${OSRelease%%.*}\"x == 7x ]; then rpm -q $V7PACKAGE &>/dev/null && rpm -q $PACKAGE2 &>/dev/null if [ $? -ne 0 ]; then echo \"Please install the \"$V7PACKAGE\" and \"$PACKAGE2\" packages fir\" echo \"Exiting now......\" fi else rpm -q $PACKAGE1 &>/dev/null && rpm -q $PACKAGE2 &>/dev/null if [ $? -ne 0 ]; then echo \"Please install the \"$PACKAGE1\" and \"$PACKAGE2\" packages first, then execute the script.\" echo \"Exiting now......\" exit $ErrPackage fi fi if [ \"$OSType\" == \"\" ]; then echo \"Unsupport OS type, the script only support OS type: RHEL/CentOS.\" exit $ErrOSType else case $OSRelease in 5.*) V5 ;; 6.*) V6 ;; 7.*) V7 ;; *) echo \"Unsupport OS release version, the script only support release version: 5.x/6.x/7.x.\" echo \"Exiting now...\" exit $ErrOSVersion ;; esac fi echo -e \' //------------------------------ //tNetwork setting //------------------------------ \' echo \"Execute the scripts success, the NICs are in line!\"