linux修改网卡名称
linux修改网卡名称脚本,在生活中大家在安装服务器中都会遇到装完系统后发现网卡名称为ens esp等等杂七杂八的网卡名,管理起来特别不方便,因此我写了一个脚本供大家参考,可直接复制粘贴,执行完脚本后需重启服务器方可生效!
#!/bin/bash
n=`ip addr|awk -F ':' '{print $2}'|grep -v "^$"|grep e|wc -l`
dir="/etc/sysconfig/network-scripts"
dir1="/lib/udev/rules.d"
date=`date +%Y-%m-%d`
num=`ls /etc/sysconfig/network-scripts/|grep ifcfg-e|wc -l`
rules="ACTION==\"add\", SUBSYSTEM==\"net\", DRIVERS==\"?*\", ATTR{type}==\"1\""
ip addr|awk -F ':' '{print $2}'|grep -v "^$"|grep e&>>/tmp/oldname.txt
ip addr|grep ether|awk '{print $2}' &>> /tmp/mac.txt
sed -i '1'd /tmp/oldname.txt
sed -i 's/ //g' /tmp/oldname.txt
#network interface backup
mkdir $dir/network-$date.bak
cp $dir/ifcfg-e* $dir/network-$date.bak
cp $dir1/60-net.rules $dir/network-$date.bak/
#create a new network card name
for i in {0..5}
do
echo "ifcfg-eth$i" &>> /tmp/newname.txt
done
mac=`sed -n '1'p /tmp/mac.txt`
mac2=`sed -n '2'p /tmp/mac.txt`
mac3=`sed -n '3'p /tmp/mac.txt`
mac4=`sed -n '4'p /tmp/mac.txt`
mac5=`sed -n '5'p /tmp/mac.txt`
mac6=`sed -n '6'p /tmp/mac.txt`
olda=`sed -n '1'p /tmp/oldname.txt`
oldb=`sed -n '2'p /tmp/oldname.txt`
oldc=`sed -n '3'p /tmp/oldname.txt`
oldd=`sed -n '4'p /tmp/oldname.txt`
olde=`sed -n '5'p /tmp/oldname.txt`
oldf=`sed -n '6'p /tmp/oldname.txt`
newone=`sed -n '1'p /tmp/newname.txt`
newtwo=`sed -n '2'p /tmp/newname.txt`
newthree=`sed -n '3'p /tmp/newname.txt`
newfore=`sed -n '4'p /tmp/newname.txt`
newfive=`sed -n '5'p /tmp/newname.txt`
newsix=`sed -n '6'p /tmp/newname.txt`
#determine how many network cards there are
if [ $n -eq 1 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
mv $dir/$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
elif [ $n -eq 2 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac2\", NAME=\"eth1\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
mv $dir/ifcfg-$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
mv $dir/ifcfg-$oldb $dir/$newtwo
sed -i 's/NAME/#NAME/g' $dir/$newtwo
sed -i '/NAME/i\NAME=eth1' $dir/$newtwo
sed -i 's/DEVICE/#DEVICE/g' $dir/$newtwo
sed -i '/DEVICE/i\DEVICE=eth1' $dir/$newtwo
echo "MACADDR=$mac2" &>> $dir/$newtwo
elif [ $n -eq 3 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac2\", NAME=\"eth1\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac3\", NAME=\"eth2\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
mv $dir/ifcfg-$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
mv $dir/ifcfg-$oldb $dir/$newtwo
sed -i 's/NAME/#NAME/g' $dir/$newtwo
sed -i '/NAME/i\NAME=eth1' $dir/$newtwo
sed -i 's/DEVICE/#DEVICE/g' $dir/$newtwo
sed -i '/DEVICE/i\DEVICE=eth1' $dir/$newtwo
echo "MACADDR=$mac2" &>> $dir/$newtwo
mv $dir/ifcfg-$oldc $dir/$newthree
sed -i 's/NAME/#NAME/g' $dir/$newthree
sed -i '/NAME/i\NAME=eth2' $dir/$newthree
sed -i 's/DEVICE/#DEVICE/g' $dir/$newthree
sed -i '/DEVICE/i\DEVICE=eth2' $dir/$newthree
echo "MACADDR=$mac3" &>> $dir/$newthree
elif [ $n -eq 4 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac2\", NAME=\"eth1\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac3\", NAME=\"eth2\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac4\", NAME=\"eth3\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
mv $dir/ifcfg-$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
mv $dir/ifcfg-$oldb $dir/$newtwo
sed -i 's/NAME/#NAME/g' $dir/$newtwo
sed -i '/NAME/i\NAME=eth1' $dir/$newtwo
sed -i 's/DEVICE/#DEVICE/g' $dir/$newtwo
sed -i '/DEVICE/i\DEVICE=eth1' $dir/$newtwo
echo "MACADDR=$mac2" &>> $dir/$newtwo
mv $dir/ifcfg-$oldc $dir/$newthree
sed -i 's/NAME/#NAME/g' $dir/$newthree
sed -i '/NAME/i\NAME=eth2' $dir/$newthree
sed -i 's/DEVICE/#DEVICE/g' $dir/$newthree
sed -i '/DEVICE/i\DEVICE=eth2' $dir/$newthree
echo "MACADDR=$mac3" &>> $dir/$newfore
mv $dir/ifcfg-$oldd $dir/$newfore
sed -i 's/NAME/#NAME/g' $dir/$newfore
sed -i '/NAME/i\NAME=eth3' $dir/$newfore
sed -i 's/DEVICE/#DEVICE/g' $dir/$newfore
sed -i '/DEVICE/i\DEVICE=eth3' $dir/$newfore
echo "MACADDR=$mac4" &>> $dir/$newfore
elif [ $n -eq 5 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac2\", NAME=\"eth1\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac3\", NAME=\"eth2\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac4\", NAME=\"eth3\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac5\", NAME=\"eth4\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
mv $dir/ifcfg-$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
mv $dir/ifcfg-$oldb $dir/$newtwo
sed -i 's/NAME/#NAME/g' $dir/$newtwo
sed -i '/NAME/i\NAME=eth1' $dir/$newtwo
sed -i 's/DEVICE/#DEVICE/g' $dir/$newtwo
sed -i '/DEVICE/i\DEVICE=eth1' $dir/$newtwo
echo "MACADDR=$mac2" &>> $dir/$newtwo
mv $dir/ifcfg-$oldc $dir/$newthree
sed -i 's/NAME/#NAME/g' $dir/$newthree
sed -i '/NAME/i\NAME=eth2' $dir/$newthree
sed -i 's/DEVICE/#DEVICE/g' $dir/$newthree
sed -i '/DEVICE/i\DEVICE=eth2' $dir/$newthree
echo "MACADDR=$mac3" &>> $dir/$newfore
mv $dir/ifcfg-$oldd $dir/$newfore
sed -i 's/NAME/#NAME/g' $dir/$newfore
sed -i '/NAME/i\NAME=eth3' $dir/$newfore
sed -i 's/DEVICE/#DEVICE/g' $dir/$newfore
sed -i '/DEVICE/i\DEVICE=eth3' $dir/$newfore
echo "MACADDR=$mac4" &>> $dir/$newfore
mv $dir/ifcfg-$olde $dir/$newfive
sed -i 's/NAME/#NAME/g' $dir/$newfive
sed -i '/NAME/i\NAME=eth4' $dir/$newfive
sed -i 's/DEVICE/#DEVICE/g' $dir/$newfive
sed -i '/DEVICE/i\DEVICE=eth4' $dir/$newfive
echo "MACADDR=$mac5" &>> $dir/$newfive
elif [ $n -eq 6 ]
then
echo "$rules, ATTR{address}==\"$mac\", NAME=\"eth0\", GOTO=\"net_end\"" &>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac2\", NAME=\"eth1\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac3\", NAME=\"eth2\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac4\", NAME=\"eth3\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac5\", NAME=\"eth4\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
echo "$rules, ATTR{address}==\"$mac6\", NAME=\"eth5\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
mv $dir/ifcfg-$olda $dir/$newone
sed -i 's/NAME/#NAME/g' $dir/$newone
sed -i '/NAME/i\NAME=eth0' $dir/$newone
sed -i 's/DEVICE/#DEVICE/g' $dir/$newone
sed -i '/DEVICE/i\DEVICE=eth0' $dir/$newone
echo "MACADDR=$mac" &>> $dir/$newone
mv $dir/ifcfg-$oldb $dir/$newtwo
sed -i 's/NAME/#NAME/g' $dir/$newtwo
sed -i '/NAME/i\NAME=eth1' $dir/$newtwo
sed -i 's/DEVICE/#DEVICE/g' $dir/$newtwo
sed -i '/DEVICE/i\DEVICE=eth1' $dir/$newtwo
echo "MACADDR=$mac2" &>> $dir/$newtwo
mv $dir/ifcfg-$oldc $dir/$newthree
sed -i 's/NAME/#NAME/g' $dir/$newthree
sed -i '/NAME/i\NAME=eth2' $dir/$newthree
sed -i 's/DEVICE/#DEVICE/g' $dir/$newthree
sed -i '/DEVICE/i\DEVICE=eth2' $dir/$newthree
echo "MACADDR=$mac3" &>> $dir/$newfore
mv $dir/ifcfg-$oldd $dir/$newfore
sed -i 's/NAME/#NAME/g' $dir/$newfore
sed -i '/NAME/i\NAME=eth3' $dir/$newfore
sed -i 's/DEVICE/#DEVICE/g' $dir/$newfore
sed -i '/DEVICE/i\DEVICE=eth3' $dir/$newfore
echo "MACADDR=$mac4" &>> $dir/$newfore
mv $dir/ifcfg-$olde $dir/$newfive
sed -i 's/NAME/#NAME/g' $dir/$newfive
sed -i '/NAME/i\NAME=eth4' $dir/$newfive
sed -i 's/DEVICE/#DEVICE/g' $dir/$newfive
sed -i '/DEVICE/i\DEVICE=eth4' $dir/$newfive
echo "MACADDR=$mac5" &>> $dir/$newfive
mv $dir/ifcfg-$oldf $dir/$newsix
sed -i 's/NAME/#NAME/g' $dir/$newsix
sed -i '/NAME/i\NAME=eth5' $dir/$newsix
sed -i 's/DEVICE/#DEVICE/g' $dir/$newsix
sed -i '/DEVICE/i\DEVICE=eth5' $dir/$newsix
echo "MACADDR=$mac6" &>> $dir/$newsix
fi