任意修改CentOS下網卡的顯示名稱和設備名稱


需求:將當前顯示的網卡名ens33改名為Gi0(名字可以任意定義)

說明:在實現這個功能之前我在網上大量翻實現的辦法,但是都沒有成功,有帖子說通過修改/etc/grub2.cfg來實現,的確能實現,但是只能實現變成eth0,而不能想變什么就變什么。

-----------------------------前置知識----------------------------------
首選我們需要知道/etc/sysconfig/network-scripts/ifcfg-ens33與實際的網卡到底是怎樣關聯起來的,為了便於說明,我把NAME改成ens34,DEVICE改成ens33,以下圖示范他們之間的關系

HWADDR=00:0C:29:48:6C:83
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.200.11
PREFIX=24
GATEWAY=192.168.200.60
DNS1=114.114.114.114
DNS2=61.139.2.69
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
DEVICE=ens33 UUID=b85c1bc2-d3d2-3abb-a1e9-41eab250e4b3 ONBOOT=yes AUTOCONNECT_PRIORITY=-999

 在這個文件中最關鍵的部分就是HWADDRNAME,DEVICE,UUID,在命令行中顯示的對應關系如下

[root@localhost ~]# nmcli connectio show
NAME   UUID                                  TYPE      DEVICE 
ens34  b85c1bc2-d3d2-3abb-a1e9-41eab250e4b3  ethernet  ens33  

 上面的NAME,UUID,DEVICE與之分別對應,修改首列的NAME其實很簡單,直接改文件,然后執行nmcli connection reload即可,但今天我們的目標是要修改DEVICE

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.11  netmask 255.255.255.0  broadcast 192.168.200.255
        inet6 fe80::f36c:5321:6e29:a45a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:48:6c:83  txqueuelen 1000  (Ethernet)

 上面的ens33對應文件中的是DEVICE,他的MAC地址也在這里

[root@localhost ~]# nmcli device show ens33
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:48:6C:83

--------------------------------修改現在開始-------------------------

首先我們down掉ens33這個接口,然后把他的名字改成Gi0,操作需要在控制台上進行

#down掉我們要操作的接口ens33
ip link set dev ens33 down 
#把ens33接口名直接改成Gi0
ip link set dev ens33 name Gi0
#編輯配置文件,修改DEVICE名稱為Gi0
vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=Gi0
#將新接口up起來
ip link set dev Gi0 up
#重新加載連接
nmcli connection reload

 以上操作完成后,接口名就成功修改了,我們來看看

[root@localhost ~]# ifconfig
Gi0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.200.11  netmask 255.255.255.0  broadcast 192.168.200.255
        inet6 fe80::33c8:40ae:d9e5:2854  prefixlen 64  scopeid 0x20<link>

[root@localhost ~]# nmcli connection show
NAME   UUID                                  TYPE      DEVICE 
ens34  b85c1bc2-d3d2-3abb-a1e9-41eab250e4b3  ethernet  Gi0    

[root@localhost ~]# nmcli device show Gi0
GENERAL.DEVICE:                         Gi0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:48:6C:83

 但我們看到nmcli connection show 中的NAME是ens34,現在我要把這個ens34也改成Gi0

[root@localhost ~]# nmcli connection show
NAME   UUID                                  TYPE      DEVICE 
ens34  b85c1bc2-d3d2-3abb-a1e9-41eab250e4b3  ethernet  Gi0
[root@localhost ~]# nmcli connection modify ens34 connection.id Gi0
[root@localhost ~]# nmcli connection reload
[root@localhost ~]# nmcli connection show
NAME  UUID                                  TYPE      DEVICE 
Gi0   b85c1bc2-d3d2-3abb-a1e9-41eab250e4b3  ethernet  Gi0    

 這樣就完成了修改上面修改NAME的時候沒有像開始直接修改配置文件,而是用命令來修改的,主要是介紹2種不同的修改辦法,如果想通過命令的方式修改配置文件的各項參數,你可以執行命令來看看可以修改哪些,名字是什么

連接屬性查看命令:nmcli connection show Gi0  他會顯示很多的Key=value

直接寫個shell腳本,將Gi0改成eth8,這個可以不用在控制台進行,在ssh上執行。網絡不會中斷。

#!/bin/bash
#
ip link set dev Gi0 down
ip link set dev Gi0 name eth8
nmcli connection modify Gi0 connection.id eth8
ip link set eth8 up
nmcli connection reload

 現在我來個總結的,再更新一下腳本,可以通過傳參數進去改

#!/bin/bash
#
if [ $# != 2 ]; then
    echo "Usage:$(basename $0) current-connection-name destination-connection-name"
    exit 1
fi

NicList=$(ip link show | grep '^[1-9]' | awk -F: '{print $2}')
if [[ ! $NicList =~ $1 ]];then
    echo "Device Name $1 not found!"
    exit 1
fi

ip link set dev $1 down
ip link set dev $1 name $2
nmcli connection modify $1 connection.id $2
ip link set $2 up
nmcli connection reload

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM