首页 > 系统相关 >linux 修改网卡名称

linux 修改网卡名称

时间:2023-11-04 14:23:09浏览次数:35  
标签:bin 配置文件 网卡 修改 awk linux print bash

network

修改网卡名称

参考指令

image
23.cnblogs.com/blog/2402369/202311/2402369-20231104140931306-1561136973.png)
image

image

image

注意:

  • 问题一:windows 编码格式 ^M 会影响
  • 问题二:网卡配置文件当中 static
  • 问题三:多余网卡配置文件有影响
  • 问题四:关闭 NetworkManager 服务

脚本示例

#!/bin/bash

# 基于 CentOS 7.5 编写
# 写入对应的网卡配置文件

# 时时时间 
datetime=`date +%y%m%d%H%M%S`

function bond0(){
cat > /etc/sysconfig/network-scripts/ifcfg-${a[i]} << lzl
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPADDR=
NETMASK=
GATEWAY=
IPV6ADDR=
IPV6PREFIX=
IPV6_DEFAULTGW=
ONBOOT=yes
DNS1=
DNS2=
HWADDR=${b[i]}
DEVICE=${a[i]}
NAME=${a[i]}
lzl
}

# 移动文件之前先把原有的所有网卡配置文件清空,备
# 创建默认网卡配置文件备份目录
mkdir -p /etc/sysconfig/network-scripts/network_bak/network

# 把所有的ifcfg-enp* 全部的文件移动到指定目录下
mv /etc/sysconfig/network-scripts/ifcfg-e* /etc/sysconfig/network-scripts/network_bak/network/

# 修改文件夹名
mv /etc/sysconfig/network-scripts/network_bak/network /etc/sysconfig/network-scripts/network_bak/network_$datetime

# 获取现在 /etc/sysconfig/network-scripts 目录下所有的 网卡配置文件
# 读取最初版的网卡名;用户清空原始的网卡配置文件中的mac
c_3=0
for item_2 in `cat /usr/local/las/program/network/contrast/network.txt | grep -v '^$' | awk {'print $1'}`; do
    t[c_3]=$item_2
    let c_3++
done

# 读取网卡名称并写入到数组当中
c_1=0
for item in `cat /usr/local/las/program/network/network.txt | grep -v '^$' | awk {'print $1'}`; do
    a[c_1]=$item
    let c_1++
done

# 读取网卡名称的mac地址并写入到数组当中
c_2=0
for item_1 in `cat /usr/local/las/program/network/network.txt | grep -v '^$' | awk {'print $2'}`; do
    b[c_2]=$item_1
    let c_2++
done

# 定义一个空数组
q=()

# 替换板卡,删除多余网卡配置文件
function deleteFile() {
    # 布尔值定义
    flag=false
    # 定义q数组下标
    m=0
    # 循环遍历原版网卡配置文件
    for((i=0;i<${#t[*]};i++)); do
        # 判断文件是否存在路径
        # FILE_1=/etc/sysconfig/network-scripts/ifcfg-${t[i]}
        # echo "$FILE_1-----------------"
        flag=false
        for((j=0;j<${#a[*]};j++)); do
            if [[ "${t[i]}" == "${a[j]}" ]]; then
                # echo "老版本的网卡名称与新版的相同----------新版本中存在老版本的"
                # rm -rf /etc/sysconfig/network-scripts/ifcfg-${t[i]}
                flag=true
            fi
        done
       if [[ "$flag" == "false" ]]; then
           q[m]=${t[i]}
           let m++
       fi
    done
    # echo "${q[@]}"
    for((i=0;i<${#q[*]};i++)); do
        echo "/etc/sysconfig/network-scripts/ifcfg-${q[i]}"
        rm -rf /etc/sysconfig/network-scripts/ifcfg-${q[i]}
        # echo "${i}"
    done
    
}

# 创建网卡文件
function createFile() {

    # 循环遍历网卡文件个数
    for((i=0;i<${#a[*]};i++)); do

        # 判断文件是否存在路径
        FILE=/etc/sysconfig/network-scripts/ifcfg-${a[i]}

        # 如果文件存在;修改 mac 地址
        if [ -f "$FILE" ]; then
            echo "$FILE 文件存在"

            # HWADDR 指定 mac
            s="HWADDR=${b[i]}"

            # sed 修改以HWADDR的文件 路径:FILE
            sed -i "/^HWADDR/c$s" $FILE

        # 如果文件不存在就创建对应文件
        else 
            echo "$FILE 文件不存在"
            
            # 创建对应网卡配置文件 执行文件写入
            bond0
        fi
    done

    # 用于测试使用!开放ip
    # s_1="IPADDR=192.168.45.31"
    # sed -i "/^IPADDR/c$s_1" /etc/sysconfig/network-scripts/ifcfg-GE0-0
    # s_2="GATEWAY=192.168.1.1"
    # sed -i "/^GATEWAY/c$s_2" /etc/sysconfig/network-scripts/ifcfg-GE0-0
    # s_3="NETMASK=255.255.192.0"
    # sed -i "/^NETMASK/c$s_3" /etc/sysconfig/network-scripts/ifcfg-GE0-0

}


# 重新配置grub配置并更新内核
function grub () {

# 备份原有的 grub 文件;
mv /etc/default/grub /etc/default/grub.$datetime

cat > /etc/default/grub << lzl
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root "net.ifnames=0 biosdevname=0" rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
lzl

# 清除grub备份文件
rm -rf grub.*

# sed -i 's/root rd.lvm.lv/root "net.ifnames=0 biosdevname=0" rd.lvm.lv/g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

# 删除过期版的网卡名、mac 地址文件
rm -rf /usr/local/las/program/network/contrast/*

# 把生成的网卡名、mac 地址文件,备份到指定目录下,用户对比文件的 md5 值
cp -f /usr/local/las/program/network/network.txt /usr/local/las/program/network/contrast/

# 重启系统
echo `shutdown -r now`
# echo `reboot`
}

# 删除多余文件;创建缺失文件;在重启
deleteFile && createFile && grub

#!/bin/bash

netName=$(ip addr|awk '{print $2}'|grep -E '^en|^enp|^eth|^ens|^eno|^GE')
c=0

for item in $netName; do
    a[c]=$item
    let c++
done

for((i=0;i<${#a[*]};i++)); do
    ifconfig ${a[i]} | grep ether | awk {'print $2'}
done

#!/bin/bash

lspci |grep 'Ethernet controller' | awk '{print $1}' | cut -d ":" -f 1

#!/bin/bash

lspci -D -n -v | grep "Device Serial Number" | awk '{print $6}'

标签:bin,配置文件,网卡,修改,awk,linux,print,bash
From: https://www.cnblogs.com/liuzonglin/p/17809285.html

相关文章

  • linux - 使用scp和sftp进行文件的上传和下载
    scp与sftp都是使用ssh通道进行文件的上传和下载1.scp命令的使用scp[-pr]path/[email protected]:/remote/path上传文件到服务器scp[-pr][email protected]:/remote/path./下载服务器文件到当前目录参数:-p:保留文件原油的权限信息-r:复制来源为目录时,可以复......
  • Linux创建特定用户运行应用程序
    我们知道Linxu分为内核态和用户态,用户态和内核态交互的桥梁就是shell,用户的应用程序通常运行在用户态,也就是用户空间,默认情况下,root用户拥有系统最高权限,很多时候我们在linux部署应用程序时,程序可能需要取得某些系统权限才能正常运行,比如在所属组为root的目录里新建一个*.pid文件,......
  • Linux - 启动服务的三种方式
    以启动和管理ssh服务为例1.通过init.d启动/etc/init.d/sshstatus查看服务状态/etc/init.d/sshstart启动服务/etc/init.d/sshstop停止服务/etc/init.d/sshrestart重启服务2.通过service启动servicesshstatus查看服务状态servicesshstart启动......
  • linux配置ssh
    1.安装ssh服务,运行命令  sudoyuminstallopenssh-server2、启动OpenSSH服务  sudosystemctlstartsshd.service3.安装成功后,执行以下命令启动OpenSSH服务:sudosystemctlstartsshd.service4.设置开机自启动sudosystemctlenablesshd.service5.需要使用......
  • linux系统信息命令笔记
     1,时间和日期  2,磁盘信息  4,进程概念介绍4.1,ps基本命令使用 psaux显示内容太多了。一般用psa或psau 4.2,top命令的基本使用top可以动态的显示运行中的进程并排序,退出top,输出q 4.3,kill命令的基本使用PID是进程代号。kill指定代号:终止......
  • Linux服务器之间是设置ssh免密登录
    服务器1:192.168.1.1服务器2:192.168.1.2在本地生成本机的公钥和私钥,一路回车,默认即可,默认公钥和私钥存储在家目录下的.ssh文件夹下,即~/.ssh下,当然你也可以生成自己的设置。公钥交给另一台服务器,当本服务器去连接另一台服务器时,另一台服务器会使用公钥与本服务器的私钥配对,配对成......
  • Linux如何设置ssh密钥登录
    执行ssh-keygen命令,生成id_rsa和id_rsa.pub两个文件,id_rsa是私钥(重要,需安全保管),id_rsa.pub是公钥,密钥生成过程中可根据提示对密钥设置密码,也可留空直接回车。ssh-keygen-trsa-b2048创建authorized_keys文件并设置权限[root@server1~]#touch~/.ssh/authorized_keys[roo......
  • Linux扩展逻辑卷容量
    1.添加完物理磁盘后,需要在主机端执行扫描动作,使系统能识别到新加的硬盘ls/sys/class/scsi_host  该命令列出主机的scsi接口echo"---">/sys/class/scsi_host/host0/scan  扫描接口用于检测识别到新添加的硬盘(上条命令输出的接口全部都执行该命令扫描一遍)2.用fdisk-l......
  • 教3妹学编程-算法题】2914. 使二进制字符串变美丽的最少修改次数
    3妹:呜呜,烦死了,脸上长了一个痘2哥 :不要在意这些细节嘛,不用管它,过两天自然不就好了。3妹:切,你不懂,影响这两天的心情哇。2哥 :我看你是不急着找工作了啊,工作那么辛苦,哪还有时间想这些啊。3妹:说到找工作,我又要去刷题了。2哥:我给你出一道关于美丽的题吧,让你的心情美丽美丽~ 1题目......
  • Linux命令(110)之umask
    linux命令之umask1.umask介绍linux命令umask为linux内建命令,用于设置创建文件/目录时的权限掩码。默认umask值为偶数,创建文件时,直接相减;如果有奇数,创建文件时,对应结果要加一。另外,之所以文件用666去减,表示文件默认不能有执行权限(x);如果减得的结果中有执行权限(x),则需要将其加一。......