更改网卡名称脚本 优化版

#!/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' |grep -v "^$" &>>/tmp/oldname.txt
ip addr|grep -v 'lo'|grep -v valid|grep -v inet |awk '{print $2}'|grep -A 1 '^e'|grep -v 'e' &>> /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/
mv $dir1/60-net.rules /tmp/

for b in `cat /tmp/oldname.txt`
  do
for a in `cat /tmp/mac.txt`
  do 
    i=0 
    while [ $i -lt $n ]
      do
        echo "$rules, ATTR{address}==\"$a\", NAME=\"eth$i\", GOTO=\"net_end\"" &>>$dir1/60-net.rules
        mv $dir/ifcfg-$b $dir/ifcfg-eth$i
        sed -i 's/NAME/#NAME/g' $dir/ifcfg-eth$i
 #            sed -i \'/NAME/i\NAME=eth$i\' $dir/ifcfg-eth$i
        echo "NAME=eth$i" &>> $dir/ifcfg-eth$i
        sed -i 's/DEVICE/#DEVICE/g' $dir/ifcfg-eth$i
        echo "DEVICE=eth$i" &>> $dir/ifcfg-eth$i
#            sed -i \'/DEVICE/i\DEVICE=eth$i\' $dir/ifcfg-eth$i
        echo "MACADDR=$a" &>> $dir/ifcfg-eth$i
        let i++
    done
done 
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值