C语言练习(由ai出题)
2026/10/24 2:30:03
ifup_ethernets.sh
方法一
#!/bin/bash# 等待udev设备稳定udevadm settle--timeout=5# 遍历启动所有网卡forifacein/sys/class/net/e*;do# 提取网卡名ifaceName=$(basename"$iface")# 跳过虚拟网卡: loopback, bridge, docker等[[-e/sys/devices/virtual/net/$ifaceName]]&&continue# 状态检查(避免重复操作)state=$(cat/sys/class/net/$ifaceName/operstate2>/dev/null)[["$state"!="down"]]&&continue# 启动网卡echo"启动网卡$ifaceName..."iplinkset"$ifaceName"up2>/dev/null||{echo"网卡$ifaceName启动失败">&2}done方法二
#!/bin/bash# 等待udev完成设备初始化udevadm settle--timeout=2# 获取所有物理网卡interfaces=()whileIFS=read-rline;dointerfaces+=("$line")done<<(find/sys/class/net-typel-name'e*'-printf'%f\n')# 遍历启动所有网卡forifacein"${interfaces[@]}";do# 跳过虚拟网卡[[-e"/sys/devices/virtual/net/$iface"]]&&continue# 启动物理网卡echo"Activating interface:$iface"iplinkset"$iface"up# 等待网卡实际激活timeout=5while[[$timeout-gt0]];dostate=$(cat"/sys/class/net/$iface/operstate")[["$state"=="up"||"$state"=="unknown"]]&&breaksleep1((timeout--))donedone用法:./ifup_ethernets.sh。
设置系统开机自启:
ifup_ethernets.sh放在目录/lib/ifupdown/下,chmod +x ifup_ethernets.sh赋予可执行权限。/lib/systemd/system/ifup_ethernets.service[Unit]Description=ifup all ethernetsAfter=systemd-udevd.service network-pre.target networking.serviceBefore=network.target[Service]Type=oneshotRemainAfterExit=yesExecStart=/lib/ifupdown/ifup_ethernets.shTimeoutStartSec=10StandardOutput=journalStandardError=journal[Install]WantedBy=network.targetsystemctlenableifup_ethernets systemctl daemon-reload systemctl start ifup_ethernets