• linux下如何dhcp失败为获取到ip地址,如何设置为一个固定的地址


    方法一:

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

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

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

      1. #!/bin/sh
      2. # 获取事件类型和接口名称
      3. EVENT=$1
      4. INTERFACE=$2
      5. # 仅在DHCP失败时执行
      6. if [ "$EVENT" = "dhcp-failed" ]; then
      7. # 设置静态IP的逻辑
      8. IP_ADDRESS="192.168.1.100"
      9. NETMASK="255.255.255.0"
      10. GATEWAY="192.168.1.1"
      11. DNS_SERVERS="8.8.8.8 8.8.4.4"
      12. # 配置静态IP
      13. nmcli con mod $INTERFACE ipv4.addresses $IP_ADDRESS/$NETMASK
      14. nmcli con mod $INTERFACE ipv4.gateway $GATEWAY
      15. nmcli con mod $INTERFACE ipv4.dns "$DNS_SERVERS"
      16. nmcli con up $INTERFACE
      17. 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。例如:

    1. #!/bin/bash
    2. # 检查DHCP是否成功分配IP
    3. LEASEFILE="/var/lib/NetworkManager/dhclient-*-3-eth0.lease"
    4. if [ ! -f "$LEASEFILE" ]; then
    5. # 如果没有找到lease文件,则设置静态IP
    6. nmcli con mod "Connection Name" ipv4.addresses 192.168.1.100/24
    7. nmcli con mod "Connection Name" ipv4.gateway 192.168.1.1
    8. nmcli con mod "Connection Name" ipv4.dns "8.8.8.8 8.8.4.4"
    9. nmcli con up "Connection Name"
    10. 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发行版以及你对系统的控制程度。在实施任何更改之前,请确保备份相关配置文件。

  • 相关阅读:
    scipy库统计模块stats
    Verilog参数、Verilog参数和属性冲突、整数处理
    websocket系列基于spring-boot-starter-websocket实现
    自定义命名不同类型文件,隐藏编号轻松整理,一键操作高效便捷!
    基于Vitest进行组件测试
    SSL证书安装教程
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    【iOS】使用单例封装通过AFNetworking实现的网络请求
    计算机毕业设计选题推荐-教师薪酬管理系统-Java项目实战
    一段惊呆下巴的 JavaScript 代码
  • 原文地址:https://blog.csdn.net/jiuaiwo1314/article/details/139483863