运维学习第四周作业:shell基础编程与网络配置

一、shell基础

1.变量命名规则

  1. 字符限制:只能用字母、数字、下划线,而且不能以数字开头。比如var123行,123var就不行。
  2. 大小写敏感Namename是两个不同变量,使用的时候需要统一风格。
  3. 避开关键字:像iffor这些 Shell 自带的词,不要用作变量名,容易混乱。

2.不同类型变量的使用

2.1 环境变量

  • 作用:全系统通用,当前 Shell 和子 Shell 都能用,适合存全局配置。

  • 定义方法

    • 临时用:export 变量名=值,比如export PATH=$PATH:/new/dir(给命令路径加新目录)

      • [root@rocky9 ~]# export VAR=test
        [root@rocky9 ~]# echo $VAR
        test
        [root@rocky9 ~]# 
        
    • 永久生效:写到配置文件里,用户级写~/.bashrc,系统级写/etc/profile,改完用source 文件名生效。

      • [root@rocky9 ~]# ls -a
        .  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .lesshst  .ssh  .tcshrc  .viminfo  web
        [root@rocky9 ~]# vim .bashrc # 在里面添加了TEST=test
        [root@rocky9 ~]# source .bashrc
        [root@rocky9 ~]# echo $TEST
        test
        [root@rocky9 ~]# 
        
  • 常用的环境变量HOME(家目录)、USER(当前用户名)、SHELL(当前 Shell)。

    • [root@rocky9 ~]# echo $HOME
      /root
      [root@rocky9 ~]# echo $USER
      root
      [root@rocky9 ~]# echo $SHELL
      /bin/bash
      [root@rocky9 ~]# 
      
  • 查看 / 删除echo $变量名查看值,unset 变量名删除。

    • [root@rocky9 ~]# echo $TEST
      test
      [root@rocky9 ~]# unset TEST
      [root@rocky9 ~]# echo $TEST    # 删除变量后再次查看时无输出
      
      [root@rocky9 ~]# 
      

2.2 位置变量

  • 作用:脚本里接收命令行参数,按位置编号,处理外部输入比较方便。

  • 主要成员

  • $0:脚本文件名(比如./test.sh中,$0就是./test.sh

  • $1~$9:第 1 到第 9 个参数,第 10 个及以上用${10}

  • $#:参数总个数;$@:所有参数(分开显示);$*:所有参数(合并成一个字符串)

  • 例子:写一个脚本test.sh
echo "脚本名:$0"
echo "第2个参数:$2"
echo "共$#个参数"
echo "所有参数:$*"

执行/bin/bash test.sh a b c,输出:

[root@rocky9 ~]# /bin/bash test.sh a b c
脚本名:test.sh
第2个参数:b
共3个参数
所有参数:a b c
[root@rocky9 ~]# 

2.3 只读变量

  • 作用:一旦定义就改不了,防止误操作,适合存固定值(比如常量)。

  • 定义方法

    • readonly 变量名=值,比如readonly PI=3.14

    • 先定义再设为只读:var=10; readonly var

  • 注意:只读变量删不掉,需要关掉当前 Shell 重开,强行删会报错。

  • [root@rocky9 ~]# readonly PI=3.14
    [root@rocky9 ~]# echo $PI
    3.14
    [root@rocky9 ~]# unset PI
    -bash: unset: PI:无法取消设定: 只读 variable
    [root@rocky9 ~]# 
    

2.4 局部变量

  • 作用:只在当前环境(或函数内部)有效,出了范围就失效,避免变量污染。

  • 定义方法:直接赋值,比如name="张三"(当前 Shell 用);函数里用local 变量名=值(仅限函数内)。

  • 例子:写一个脚本test.sh

# 函数内局部变量
func() {
  local age=20
  echo "函数内:$age"
}
func  # 输出20
echo "函数外:$age"  # 空的,因为外面访问不到

执行脚本,输出:

[root@rocky9 ~]# /bin/bash test.sh
函数内:18
函数外:
[root@rocky9 ~]# 

2.5 状态变量

  • 作用:反映命令或脚本的执行状态,判断操作成功与否。

  • 最常用的$?(上一条命令的返回值),0 表示成功,非 0 表示失败。

  • 用法

ls /不存在的目录
echo $?  # 输出非0(失败)
echo "成功"
echo $?  # 输出0(成功)

实践:

[root@rocky9 ~]# ls /xxx
ls: 无法访问 '/xxx': 没有那个文件或目录
[root@rocky9 ~]# echo $?
2
[root@rocky9 ~]# echo "成功"
成功
[root@rocky9 ~]# echo $?
0
[root@rocky9 ~]# 

在脚本中,command && echo "成功" || echo "失败" 用于判断:当返回值为0时,执行echo "成功";当返回值非0时,执行echo "失败"

[root@rocky9 ~]# ls /xxx && echo "成功" || echo "失败"
ls: 无法访问 '/xxx': 没有那个文件或目录
失败
[root@rocky9 ~]# 

3.实践

编写一个脚本猜数字,使用判断提示用户比目标数字是大还是小

# 编写脚本 guess_number.sh

#!/bin/bash
# 功能:猜数字,使用判断提示用户比目标数字是大还是小
count=0
number_right=$((RANDOM % 100 + 1))
while [ 1 ]; do
        echo -n "请输入数字(范围1-100):"
        read number
        if ! [[ "$number" =~ ^[0-9]+$ ]]; then
                echo "输入无效,请重新输入!"
                continue
        fi
        if [ $number -gt $number_right ]; then
                echo "猜大了"
                let "count++"
                continue
        elif [ $number -lt $number_right ]; then
                echo "猜小了"
                let "count++"
                continue
        elif [ $number -eq $number_right ]; then
                echo "猜对了"
                echo "共花了$count次猜对"
                break
        else
                echo "输入非法!"
        fi
done

执行:

[root@rocky9 ~]# /bin/bash guess_number.sh 
请输入数字(范围1-100):dd^H^H
输入无效,请重新输入!
请输入数字(范围1-100):50
猜小了
请输入数字(范围1-100):70
猜小了
请输入数字(范围1-100):90
猜大了
请输入数字(范围1-100):80
猜小了
请输入数字(范围1-100):85
猜大了
请输入数字(范围1-100):83
猜小了
请输入数字(范围1-100):84
猜对了
共花了6次猜对
[root@rocky9 ~]# 

二、网络配置

1.openEuler24.03

1.1 通过配置文件配置网络参数

(1)修改网卡名

# 查看网络信息
[root@openeuler24 ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.14/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecc8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@openeuler24 ~]# 


# 修改网卡配置文件
cd /etc/sysconfig/network-scripts/
ls

[root@openeuler24 ~]# cd /etc/sysconfig/network-scripts/
[root@openeuler24 network-scripts]# ls
ifcfg-ens160
[root@openeuler24 network-scripts]# 

# 修改文件名,将ifcfg-ensl60修改成ifcfg-eth0
mv ifcfg-ens160 ifcfg-eth0

[root@openeuler24 network-scripts]# mv ifcfg-ens160 ifcfg-eth0
[root@openeuler24 network-scripts]# ls
ifcfg-eth0
[root@openeuler24 network-scripts]# 

# 将文件内的ens160替换成eth0
sed -i 's@ens160@eth0@g' ifcfg-eth0

[root@openeuler24 network-scripts]# sed -i 's@ens160@eth0@g' ifcfg-eth0
[root@openeuler24 network-scripts]# 

# 修改grub启动配置文件
vim /ect/default/grub
#修改/etc/default/grub,在GRUB_CMDLINE_LINUX 行后面加上net.ifnames=0
# 即GRUB_CMDLINE_LINUX="... net.ifnames=0"

# 基于UEFI模式引导的系统
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

[root@openeuler24 network-scripts]# grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg

# 重启生效
reboot

(2)为 OpenEuler 虚拟机,添加一块vm虚拟网卡 NAT模式

(3)配置

# 进入openEuler的网络配置文件目录
cd /etc/sysconfig/network-scripts/

# 查看配置文件
ls

[root@openeuler24 ~]# cd /etc/sysconfig/network-scripts/
[root@openeuler24 network-scripts]# ls
ifcfg-eth0
[root@openeuler24 network-scripts]# 

# 复制配置文件
cp ifcfg-eth0 ifcfg-eth1

[root@openeuler24 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@openeuler24 network-scripts]# ls
ifcfg-eth0  ifcfg-eth1
[root@openeuler24 network-scripts]# 

# 编辑复制后的配置文件
vim ifcfg-eth1

# 配置文件的内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=eth0
UUID=e1508c62-e926-4b05-bb82-19043d45bc88
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.14
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.2

# 修改
# 把UUID那一行删去,否则会造成问题
NAME=eth1 # 网卡名
DEVICE=eth1 # 设备名
IPADDR=10.0.0.114 # IP地址
PREFIX=24 # 子网掩码
GATEWAY=10.0.0.2 # 网关
DNS1=10.0.0.2 # DNS服务器地址

(4)验证与应用

# 重启服务
systemctl restart NetworkManager

# 查看设备
nmcli device

[root@openeuler24 network-scripts]# nmcli device 
DEVICE  TYPE      STATE         CONNECTION 
eth1    ethernet  已连接        eth1       
eth0    ethernet  连接(外部)  eth0       
lo      loopback  连接(外部)  lo  

# 查看网络信息
nmcli connection

[root@openeuler24 network-scripts]# nmcli connection 
NAME  UUID                                  TYPE      DEVICE 
eth1  e1508c62-e926-4b05-bb82-19043d45bc88  ethernet  eth1   
eth0  57aa80fd-e33b-4440-b155-750db88f7ad8  ethernet  eth0   
lo    d636f294-6026-49e3-b878-679a88bfa561  loopback  lo     
[root@openeuler24 network-scripts]# 

# 查看网络信息
ip address

[root@openeuler24 network-scripts]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.14/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecc8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.114/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@openeuler24 network-scripts]# 

# 验证网络连通性
ping -c 3 www.baidu.com

1.2 通过命令配置网络参数

(1)配置IP地址、子网掩码、网关、DNS、主机名

# 查看网络信息
ip address

[root@openeuler24 network-scripts]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.14/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecc8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.114/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@openeuler24 network-scripts]# 

# 设置 IP 地址、子网掩码、网关和 DNS
nmcli connection modify eth1 ipv4.addresses "10.0.0.115/24"
nmcli connection modify eth1 ipv4.gateway "10.0.0.2"
nmcli connection modify eth1 ipv4.dns "10.0.0.2"
nmcli connection modify eth1 ipv4.method manual

[root@openeuler24 network-scripts]# nmcli connection modify eth1 ipv4.addresses "10.0.0.115/24"
[root@openeuler24 network-scripts]# nmcli connection modify eth1 ipv4.gateway "10.0.0.2"
[root@openeuler24 network-scripts]# nmcli connection modify eth1 ipv4.dns "10.0.0.2"
[root@openeuler24 network-scripts]# nmcli connection modify eth1 ipv4.method manual
[root@openeuler24 network-scripts]# 

# 应用配置
nmcli connection down eth1
nmcli connection up eth1

[root@openeuler24 network-scripts]# nmcli connection down eth1
成功停用连接 "eth1"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@openeuler24 network-scripts]# nmcli connection up eth1
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

# 设置主机名
hostnamectl set-hostname myhost

(2)验证配置

# 查看 IP 配置
ip addr show eth1

# 验证
[root@openeuler24 network-scripts]# ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.115/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@openeuler24 network-scripts]# 

# 查看路由表
ip route

[root@openeuler24 network-scripts]# ip route
default via 10.0.0.2 dev eth0 proto static metric 102 
default via 10.0.0.2 dev eth1 proto static metric 103 
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.14 metric 102 
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.115 metric 103 
[root@openeuler24 network-scripts]# 

# 查看 DNS 配置
cat /etc/resolv.conf

# 测试网络连通性
ping -c 3 www.baidu.com
nslookup www.baidu.com

2.Rocky9.5

2.1 通过配置文件配置网络参数

(1)修改网卡名

# 查看网络信息
[root@rocky9 ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:54 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 10.0.0.15/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:4a54/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# 注意:在Rocky9中对于网卡名称标准化不生效,需要手动添加配置文件

# 查看网卡的ID
cat /sys/class/net/ens224/type

# 定制设备关联信息
[root@rocky9 system-connections]# vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:0c:29:b1:f4:5e",ATTR{type}=="1",NAME="eth0"

# Rocky9的网络配置文件位于/etc/NetworkManager/system-connections目录中
cd /etc/NetworkManager/system-connections
ls

[root@rocky9 ~]# cd /etc/NetworkManager/system-connections/
[root@rocky9 system-connections]# ls
ens160.nmconnection
[root@rocky9 system-connections]# 


# 修改文件名,将ens160.nmconnection修改成eth0.nmconnection
mv ens160.nmconnection eth0.nmconnection

[root@rocky9 system-connections]# mv ens160.nmconnection eth0.nmconnection 
[root@rocky9 system-connections]# ls
eth0.nmconnection
[root@rocky9 system-connections]# 

# 将文件内的ens160替换成eth0
sed -i 's@ens160@eth0@g' eth0.nmconnection

[root@rocky9 system-connections]# sed -i 's@ens160@eth0@g' eth0.nmconnection
[root@rocky9 system-connections]# 

# 修改grub启动配置文件
vim /etc/default/grub
#修改/etc/default/grub,在GRUB_CMDLINE_LINUX 行后面加上net.ifnames=0
# 即GRUB_CMDLINE_LINUX="... net.ifnames=0"

# 基于BIOS模式引导的系统
grub2-mkconfig -o /boot/grub2/grub.cfg

[root@rocky9 system-connections]# grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启生效
reboot

(2)为Rocky9虚拟机添加一块vm虚拟网卡 NAT模式

(3)配置

[root@rocky9 ~]# cd /etc/NetworkManager/system-connections/
[root@rocky9 system-connections]# ls
eth0.nmconnection

# 创建网卡文件
[root@rocky9 system-connections]# cp eth0.nmconnection eth1.nmconnection

# 定制配置
[root@rocky9 system-connections]# vim eth1.nmconnection
[connection]
id=eth1
type=ethernet
autoconnect-priority=-999
interface-name=eth1
[ipv4]
address1=10.0.0.116/24,10.0.0.2
dns=10.0.0.2;
method=manual

# 注意:由于Rocky9中对于网卡名称标准化不生效,需要手动添加配置文件
[root@rocky9 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:54 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 10.0.0.15/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:4a54/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:5e brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    inet 10.0.0.137/24 brd 10.0.0.255 scope global dynamic noprefixroute ens224
       valid_lft 1669sec preferred_lft 1669sec
    inet6 fe80::4569:6ba0:bd26:c665/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rocky9 ~]# 

# 查看网卡的ID
cat /sys/class/net/ens224/type

# 定制设备关联信息
[root@rocky9 system-connections]# vim /etc/udev/rules.d/70-persistent-net.rules
# 添加以下信息(注意:网卡名、MAC地址要对应上)
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="00:0c:29:83:4a:5e",ATTR{type}=="1",NAME="eth1"

(4)生效配置

# 重启
reboot

# 验证

[root@rocky9 ~]# nmcli connection
NAME     UUID                                  TYPE      DEVICE  
eth0     da272748-8d74-3807-ac03-8ef8ea364e2e  ethernet  eth0    
eth1     5eb4da26-5d1d-30a5-8747-80181ed055fa  ethernet  eth1    
lo       ce7e94a6-d3a8-49d8-a8dd-8138ccc19809  loopback  lo      
docker0  2d5117ce-1c4d-4289-a896-9d15a735271c  bridge    docker0 
[root@rocky9 ~]# 


[root@rocky9 ~]# nmcli device
DEVICE   TYPE      STATE         CONNECTION 
eth0     ethernet  已连接        eth0       
eth1     ethernet  已连接        eth1       
lo       loopback  连接(外部)  lo         
docker0  bridge    连接(外部)  docker0    
[root@rocky9 ~]# 

[root@rocky9 ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:54 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 10.0.0.15/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:4a54/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:5e brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    altname ens224
    inet 10.0.0.116/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:4a5e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rocky9 ~]# 

2.2 通过命令配置网络参数

(1)配置IP地址、子网掩码、网关、DNS、主机名

# 设置 IP 地址、子网掩码、网关和 DNS
nmcli connection modify eth1 ipv4.addresses "192.168.1.10/24"
nmcli connection modify eth1 ipv4.gateway "192.168.1.1"
nmcli connection modify eth1 ipv4.dns "8.8.8.8"
nmcli connection modify eth1 ipv4.method manual

# 应用配置
nmcli connection down eth1
nmcli connection up eth1

[root@rocky9 ~]# nmcli connection down eth1
成功停用连接 "eth1"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@rocky9 ~]# nmcli connection up eth1
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

# 设置主机名
hostnamectl set-hostname myhost

(2)验证配置

# 查看 IP 配置
ip addr show eth1

[root@rocky9 ~]# ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:83:4a:5e brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    altname ens224
    inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:4a5e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@rocky9 ~]# 

# 查看路由表
ip route

[root@rocky9 ~]# ip route
default via 10.0.0.2 dev eth0 proto static metric 100 
default via 192.168.1.1 dev eth1 proto static metric 101 
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.15 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10 metric 101 
[root@rocky9 ~]# 

# 查看 DNS 配置
cat /etc/resolv.conf

[root@rocky9 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search 5-0.15
nameserver 10.0.0.2
nameserver 8.8.8.8
[root@rocky9 ~]# 

# 测试网络连通性
ping -c 3 www.baidu.com
nslookup www.baidu.com

3.Ubuntu24.04

3.1 通过配置文件配置网络参数

(1)修改主机名

# 查看网络信息
root@ubuntu2404-016:~# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:3c:67 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 10.0.0.16/24 brd 10.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec7:3c67/64 scope link 
       valid_lft forever preferred_lft forever
root@ubuntu2404-016:~# 


# Ubuntu的网络配置文件位于/etc/netplan/目录中
cd /etc/netplan/
ls

root@ubuntu2404-016:~# cd /etc/netplan/
root@ubuntu2404-016:/etc/netplan# ls
50-cloud-init.yaml
root@ubuntu2404-016:/etc/netplan# 


# 修改文件名,将50-cloud-init.yaml修改成eth0.yaml
mv ens160.nmconnection.yaml eth0.yaml

root@ubuntu2404-016:/etc/netplan# mv 50-cloud-init.yaml eth0.yaml
root@ubuntu2404-016:/etc/netplan# ls
eth0.yaml
root@ubuntu2404-016:/etc/netplan# 

# 将文件内的ens33替换成eth0
sed -i 's@ens33@eth0@g' eth0.yaml

root@ubuntu2404-016:/etc/netplan# sed -i 's@ens33@eth0@g' eth0.yaml
root@ubuntu2404-016:/etc/netplan# 

# 修改grub启动配置文件
vim /etc/default/grub
#修改/etc/default/grub,在GRUB_CMDLINE_LINUX 行后面加上net.ifnames=0
# 即GRUB_CMDLINE_LINUX="... net.ifnames=0"

# 更新GRUB配置
root@ubuntu2404-016:/etc/netplan# update-grub

# 重启生效
reboot

(2)为Ubuntu24虚拟机添加一块vm虚拟网卡 NAT模式

(3)配置

# Ubuntu的网络配置文件位于/etc/netplan/目录中

root@ubuntu2404-016:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:3c:67 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    altname ens33
    inet 10.0.0.16/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec7:3c67/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:0c:29:c7:3c:71 brd ff:ff:ff:ff:ff:ff
    altname enp2s5
    altname ens37
root@ubuntu2404-016:~# cd /etc/netplan/
root@ubuntu2404-016:/etc/netplan# ls
eth0.yaml
root@ubuntu2404-016:/etc/netplan# cp eth0.yaml eth1.yaml 
root@ubuntu2404-016:/etc/netplan# ls
eth0.yaml  eth1.yaml
root@ubuntu2404-016:/etc/netplan# vim eth1.yaml 

# Ubuntu 20.04 及以上版本使用 Netplan 来管理网络配置
# 检测
root@ubuntu2404-016:/etc/netplan# nmcli device status
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  unmanaged  --         
eth1    ethernet  unmanaged  --         
lo      loopback  unmanaged  --         
root@ubuntu2404-016:/etc/netplan# 

# 如果需要使用nmcli命令,需要使用NetworkManager来管理网络,将配置文件中的renderer填写为NetworkManager
# Ubuntu可能需要手动安装NetworkManager
apt update
apt install network-manager

# 配置示例:
network:
  version: 2 # Netplan配置文件的版本号为2
  renderer: NetworkManager # 
  ethernets: # 定义了以太网接口的配置区块
    eth1: # 以太网名
      addresses:
        - "10.0.0.117/24"
      nameservers:
        addresses:
          - 10.0.0.2

# 注意:一台主机上,不要为多个网卡配置default的route

(4)生效配置

root@ubuntu2404-016:/etc/netplan# netplan apply

# 验证
root@ubuntu2404-016:/etc/netplan# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:3c:67 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    altname ens33
    inet 10.0.0.16/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec7:3c67/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:3c:71 brd ff:ff:ff:ff:ff:ff
    altname enp2s5
    altname ens37
    inet 10.0.0.117/24 brd 10.0.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec7:3c71/64 scope link 
       valid_lft forever preferred_lft forever
root@ubuntu2404-016:/etc/netplan# 

root@ubuntu2404-016:/etc/netplan# nmcli connection
NAME          UUID                                  TYPE      DEVICE 
netplan-eth0  626dd384-8b3d-3690-9511-192b2c79b3fd  ethernet  eth0   
netplan-eth1  8bf25856-ca0b-388e-823c-b898666ab9d2  ethernet  eth1   
lo            c05fea19-a3ab-4743-bf56-ddac50a1deab  loopback  lo     
root@ubuntu2404-016:/etc/netplan# nmcli device
DEVICE  TYPE      STATE                   CONNECTION   
eth0    ethernet  connected               netplan-eth0 
eth1    ethernet  connected               netplan-eth1 
lo      loopback  connected (externally)  lo           
root@ubuntu2404-016:/etc/netplan# 

3.2 通过命令配置网络参数

(1)配置IP地址、子网掩码、网关、DNS、主机名

# 设置 IP 地址、子网掩码、网关和 DNS
nmcli connection modify netplan-eth1 \
  ipv4.addresses "192.168.1.15/24" \
  ipv4.gateway "192.168.1.1" \
  ipv4.dns "8.8.8.8" \
  ipv4.method manual

# 应用配置
nmcli connection down netplan-eth1
nmcli connection up netplan-eth1

root@ubuntu2404-016:/etc/netplan# nmcli connection down netplan-eth1
Connection 'netplan-eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
root@ubuntu2404-016:/etc/netplan# nmcli connection up netplan-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
root@ubuntu2404-016:/etc/netplan# 

# 设置主机名
sudo hostnamectl set-hostname myhost

(2)验证配置

# 查看 IP 配置
ip addr show netplan-eth1

root@ubuntu2404-016:/etc/netplan# ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:c7:3c:71 brd ff:ff:ff:ff:ff:ff
    altname enp2s5
    altname ens37
    inet 192.168.1.15/24 brd 192.168.1.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet 10.0.0.117/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec7:3c71/64 scope link 
       valid_lft forever preferred_lft forever
root@ubuntu2404-016:/etc/netplan# 

# 查看路由表
ip route

root@ubuntu2404-016:/etc/netplan# ip route
default via 10.0.0.2 dev eth0 proto static metric 100 
default via 192.168.1.1 dev eth1 proto static metric 101 
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.16 metric 100 
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.117 metric 101 
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.15 metric 101 
root@ubuntu2404-016:/etc/netplan# 

# 查看 DNS 配置
cat /etc/resolv.conf

# 测试网络连通性
ping -c 3 www.baidu.com
nslookup www.baidu.com

4.命令总结

命令作用
ip aip addr显示所有网络接口的配置信息
nmcli connectionnmcli con显示网络连接状态
nmcli connection up <连接名>激活指定网络连接
nmcli connection down <连接名>停用指定网络连接
nmcli connection reload重新加载所有网络连接配置文件
systemctl restart NetworkManager重启 NetworkManager 服务
hostnamectl set-hostname <主机名>设置永久主机名
exec /bin/bash使主机名立即生效
ping <目标地址>测试与目标地址的连通性
nslookup <域名>查询域名对应的 IP 地址

三、CentOS 7 网络配置文件解析

CentOS7使用 /etc/sysconfig/network-scripts/ifcfg-* 配置文件

# 网络接口类型,通常为 Ethernet
TYPE=Ethernet

# 是否在系统启动时自动激活该网络接口
ONBOOT=yes

# 网络接口的名称
NAME=eth0

# 设备名称,与接口名称一致
DEVICE=eth0

# 引导协议,可选值有 none(静态配置)、dhcp(动态获取 IP)
BOOTPROTO=none

# 静态配置时的 IP 地址
IPADDR=192.168.1.10

# 子网掩码
NETMASK=255.255.255.0

# 网关地址
GATEWAY=192.168.1.1

# 主 DNS 服务器地址
DNS1=8.8.8.8

# 备用 DNS 服务器地址
DNS2=8.8.4.4

四、网卡绑定

网卡绑定是将多块物理网卡绑定为一个虚拟网卡(bond 设备),实现高可用(故障自动切换)或负载均衡,支持 7 种模式(如主备、轮询等)。

常用模式

  • mode=0(轮询):流量轮询分配到各网卡,需交换机支持。

  • mode=1(主备):仅主网卡工作,故障时自动切换到备网卡。

1.Rocky 9 配置(主备模式)

  • 添加两块仅主机模式的网卡
  • 查看连接和设备
nmcli connection
nmcli device

[root@rocky9 ~]# nmcli connection
NAME        UUID                                  TYPE      DEVICE  
eth0        da272748-8d74-3807-ac03-8ef8ea364e2e  ethernet  eth0    
有线连接 1  39f36b8b-02e2-3056-bdc0-c35a262cfb30  ethernet  ens256  
有线连接 2  bf760555-db08-3866-8e62-5b093f054c9c  ethernet  ens161  
eth1        5eb4da26-5d1d-30a5-8747-80181ed055fa  ethernet  eth1    
lo          11a9588f-d35b-497a-9095-fab1aa943599  loopback  lo      

[root@rocky9 ~]# nmcli device
DEVICE   TYPE      STATE         CONNECTION 
eth0     ethernet  已连接        eth0       
ens161   ethernet  已连接        有线连接 2 
ens256   ethernet  已连接        有线连接 1 
eth1     ethernet  已连接        eth1       
lo       loopback  连接(外部)  lo         
[root@rocky9 ~]# 
  • 创建 bond 设备:
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000"  # 主备模式,1秒检测一次链路
  • 绑定物理网卡:
nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens161 master bond0
nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens256 master bond0
nmcli connection # 验证

[root@rocky9 ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000"
连接 "bond0" (e6404833-a208-4456-b824-70faf215cf2c) 已成功添加。
[root@rocky9 ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens161 master bond0
连接 "bond0-port1" (960f478a-fde3-410b-b5b6-0993bbee16b9) 已成功添加。
[root@rocky9 ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens256 master bond0
连接 "bond0-port2" (ca16c040-64c9-409f-a01d-87e37ce425a6) 已成功添加。
[root@rocky9 ~]# nmcli connection
NAME         UUID                                  TYPE      DEVICE  
eth0         da272748-8d74-3807-ac03-8ef8ea364e2e  ethernet  eth0    
有线连接 1   39f36b8b-02e2-3056-bdc0-c35a262cfb30  ethernet  ens256  
有线连接 2   bf760555-db08-3866-8e62-5b093f054c9c  ethernet  ens161  
eth1         5eb4da26-5d1d-30a5-8747-80181ed055fa  ethernet  eth1    
bond0        e6404833-a208-4456-b824-70faf215cf2c  bond      bond0   
lo           11a9588f-d35b-497a-9095-fab1aa943599  loopback  lo      
docker0      f2172c01-21a8-412f-988e-25608da98e08  bridge    docker0 
bond0-port1  960f478a-fde3-410b-b5b6-0993bbee16b9  ethernet  --      
bond0-port2  ca16c040-64c9-409f-a01d-87e37ce425a6  ethernet  --      
[root@rocky9 ~]# 
  • 配置bond的 IP 并启用:
nmcli connection modify bond0 ipv4.addresses 192.168.8.123/24 ipv4.method manual connection.autoconnect yes
nmcli connection up bond0 # 启用绑定网卡
nmcli connection up bond0-port1 # 启动端口
nmcli connection up bond0-port2 # 启动端口
# 查看生成的配置文件
ls /etc/NetworkManager/system-connections/
# 查看网卡绑定信息
cat /proc/net/bonding/bond0

[root@rocky9 ~]# nmcli connection modify bond0 ipv4.addresses 192.168.8.123/24 ipv4.method manual connection.autoconnect yes
[root@rocky9 ~]# nmcli connection up bond0
连接已成功激活(controller waiting for ports)(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/8)
[root@rocky9 ~]# nmcli connection up bond0-port1
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)
[root@rocky9 ~]# nmcli connection up bond0-port2
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/10)
[root@rocky9 ~]# ls /etc/NetworkManager/system-connections/
bond0.nmconnection  bond0-port1.nmconnection  bond0-port2.nmconnection  eth0.nmconnection  eth1.nmconnection
[root@rocky9 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.14.0-503.14.1.el9_5.x86_64

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens161
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens161
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:83:4a:68
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:83:4a:72
Slave queue ID: 0
[root@rocky9 ~]# 
  • 测试故障转移:
ip link set ens161 down  # 关闭主网卡
cat /proc/net/bonding/bond0  # 查看是否自动切换到ens256

[root@rocky9 ~]# ip link set ens161 down
[root@rocky9 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v5.14.0-503.14.1.el9_5.x86_64

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens256  # 切换成功
MII Status: up
MII Polling Interval (ms): 1000
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: ens161
MII Status: down
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:83:4a:68
Slave queue ID: 0

Slave Interface: ens256
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:83:4a:72
Slave queue ID: 0
[root@rocky9 ~]# 

2.OpenEuler 配置(主备模式)

  • 添加两块仅主机模式的网卡
  • 创建 bond 配置文件:
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<-EOF
TYPE=Bond
BOOTPROTO=none
NAME=bond0
DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"  # 主备模式,故障时切换MAC
IPADDR=192.168.8.100
PREFIX=24
EOF
  • 配置从网卡:
# 查看网络
ip address

[root@openeuler24 ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:c8 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.14/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecc8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.115/24 brd 10.0.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe52:ecd2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:e6 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:52:ec:dc brd ff:ff:ff:ff:ff:ff
[root@openeuler24 ~]# 

# 为eth2创建配置
cat > /etc/sysconfig/network-scripts/ifcfg-eth2 <<-EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=eth2
DEVICE=eth2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF

# 为eth3创建配置
cat > /etc/sysconfig/network-scripts/ifcfg-eth3 <<-EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=eth3
DEVICE=eth3
ONBOOT=yes
MASTER=bond0
SLAVE=yes
EOF
  • 生效配置:
# 重启网络服务
systemctl restart NetworkManager
# 或重新加载配置
nmcli connection reload

# 验证
[root@openeuler24 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v6.6.0-28.0.0.34.oe2403.x86_64

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:52:ec:e6
Slave queue ID: 0

Slave Interface: eth3
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:52:ec:dc
Slave queue ID: 0
[root@openeuler24 network-scripts]# 

3.清理环境

还原网络环境

# Rocky9
nmcli connection delete bond0
nmcli connection delete bond0-port1
nmcli connection delete bond0-port2

# Ubuntu
rm -f /etc/netplan/bond0.yaml
netplan apply

# OpenEuler
nmcli conn down bond0 # 停用绑定网卡
nmcli device
rm -rf /etc/sysconfig/network-scripts/ifcfg-{bond0,eth2,eth3} # 删除配置文件
systemctl restart NetworkManager # 重启网络服务
nmcli connection reload # 或重新加载配置

五、使用shell脚本判断主机所在网络内的在线IP

cat > scan_network.sh <<'EOF'
#!/bin/bash
# scan_network.sh

# 获取 IP 和子网掩码
ip=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d '/' -f 1)
subnet=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d '/' -f 2)

# 提取网络地址(10.0.0.0)
network=$(ipcalc -s "$ip/$subnet" | awk '/^Network:/ {split($2, arr, "/"); print arr[1]}')

echo "扫描网络: $network/$subnet"
echo "----------------------------"

for i in {1..254}; do
    target_ip="${network%.*}.$i"  # 确保格式是 10.0.0.1(而不是 10.0.0.0.1)
    if ping -c 1 -W 1 "$target_ip" >/dev/null 2>&1; then
        echo "$target_ip 在线"
    fi
done

echo "----------------------------"
echo "扫描完成"

EOF
[root@openeuler24 ~]# /bin/bash scan_network.sh 
扫描网络: 10.0.0.0.0/24
----------------------------
10.0.0.1 在线
10.0.0.2 在线
10.0.0.14 在线
10.0.0.115 在线
----------------------------
扫描完成
[root@openeuler24 ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值