方法一:
在NetworkManager
的dispatcher.d
目录下增加一个脚本是一种常见的方法,用于在网络连接变化时自动执行某些操作。以下是一个示例,演示如何创建一个脚本来在DHCP失败时设置一个固定的IP地址。
创建脚本文件: 首先,你需要创建一个新的脚本文件。打开终端并输入以下命令来创建并编辑脚本:
sudo vim /etc/NetworkManager/dispatcher.d/99-set-fallback-ip
编写脚本: 在打开的编辑器中,输入以下脚本内容:
#!/bin/sh # 获取事件类型和接口名称 EVENT=$1 INTERFACE=$2 # 仅在DHCP失败时执行 if [ "$EVENT" = "dhcp-failed" ]; then # 设置静态IP的逻辑 IP_ADDRESS="192.168.1.100" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" DNS_SERVERS="8.8.8.8 8.8.4.4" # 配置静态IP nmcli con mod $INTERFACE ipv4.addresses $IP_ADDRESS/$NETMASK nmcli con mod $INTERFACE ipv4.gateway $GATEWAY nmcli con mod $INTERFACE ipv4.dns "$DNS_SERVERS" nmcli con up $INTERFACE fi
请根据你的网络环境修改
IP_ADDRESS
、NETMASK
、GATEWAY
和DNS_SERVERS
。保存并关闭文件:
使脚本可执行: 运行以下命令来使脚本文件可执行:
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-set-fallback-ip
重启NetworkManager: 为了让更改生效,重启NetworkManager服务:
sudo systemctl restart NetworkManager
这个脚本将在DHCP失败时自动执行,为指定的网络接口设置一个固定的IP地址。请注意,nmcli
命令是NetworkManager的命令行界面,用于管理网络连接。
确保在执行这些步骤之前备份任何现有的配置文件,以防需要恢复。此外,根据你的Linux发行版和NetworkManager的版本,步骤可能会有所不同。
方法二:
你可以编写一个脚本或使用cron
作业定期检查网络状态,并使用nmcli
命令设置静态IP。例如:
#!/bin/bash
# 检查DHCP是否成功分配IP
LEASEFILE="/var/lib/NetworkManager/dhclient-*-3-eth0.lease"
if [ ! -f "$LEASEFILE" ]; then
# 如果没有找到lease文件,则设置静态IP
nmcli con mod "Connection Name" ipv4.addresses 192.168.1.100/24
nmcli con mod "Connection Name" ipv4.gateway 192.168.1.1
nmcli con mod "Connection Name" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con up "Connection Name"
fi
请将"Connection Name"
替换为你的网络连接名称。
4. 使用cron
作业
你可以将上述脚本设置为cron
作业,以便定期运行。编辑crontab
:
crontab -e
然后添加以下行来每天运行脚本:
0 * * * * /path/to/your/script.sh
这将在每小时的第0分钟运行脚本。
5. 手动编辑网络配置文件
对于没有使用NetworkManager
或systemd-networkd
的系统,你可以直接编辑网络配置文件,如/etc/sysconfig/network-scripts/ifcfg-eth0
(对于使用ifupdown
的系统)或/etc/network/interfaces
(对于Debian系列系统)。
选择哪种方法取决于你的具体需求、使用的Linux发行版以及你对系统的控制程度。在实施任何更改之前,请确保备份相关配置文件。