方法一:

NetworkManagerdispatcher.d目录下增加一个脚本是一种常见的方法,用于在网络连接变化时自动执行某些操作。以下是一个示例,演示如何创建一个脚本来在DHCP失败时设置一个固定的IP地址。

  1. 创建脚本文件: 首先,你需要创建一个新的脚本文件。打开终端并输入以下命令来创建并编辑脚本:

    sudo vim /etc/NetworkManager/dispatcher.d/99-set-fallback-ip
  2. 编写脚本: 在打开的编辑器中,输入以下脚本内容:

    #!/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_ADDRESSNETMASKGATEWAYDNS_SERVERS

  3. 保存并关闭文件

  4. 使脚本可执行: 运行以下命令来使脚本文件可执行:

    sudo chmod +x /etc/NetworkManager/dispatcher.d/99-set-fallback-ip
  5. 重启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. 手动编辑网络配置文件

对于没有使用NetworkManagersystemd-networkd的系统,你可以直接编辑网络配置文件,如/etc/sysconfig/network-scripts/ifcfg-eth0(对于使用ifupdown的系统)或/etc/network/interfaces(对于Debian系列系统)。

选择哪种方法取决于你的具体需求、使用的Linux发行版以及你对系统的控制程度。在实施任何更改之前,请确保备份相关配置文件。

本站无任何商业行为
个人在线分享 » linux下如何dhcp失败为获取到ip地址,如何设置为一个固定的地址
E-->