You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux/Ubuntu中用Bash获取DHCP服务器IP地址

从dhclient输出中提取DHCP服务器IP的方法及Bash脚本

示例dhclient -v输出(中文翻译)

# dhclient -v 
Internet Systems Consortium DHCP 客户端 4.4.1
版权所有 2004-2018 Internet Systems Consortium。
保留所有权利。

正在监听 LPF/ens3/fa:16:3e:9e:33:25
正在发送至 LPF/ens3/fa:16:3e:9e:33:25
正在发送至 Socket/fallback
向 255.255.255.255 端口 67 发送针对 123.123.123.123 的 DHCPREQUEST(xid=0x77420868)
从 123.235.44.1 收到针对 123.123.123.123 的 DHCPACK(xid=0x68084277)
RTNETLINK 返回:文件已存在
已绑定至 123.123.123.123 -- 续约将在 33881 秒后进行。

提取方法

核心思路是定位包含DHCPACK且带有from关键字的行,从中提取IP地址,以下是两种常用实现方式:

1. 单行命令实现

可以直接通过管道组合工具完成提取:

  • 用awk提取字段:
dhclient -v 2>&1 | awk '/DHCPACK/ {print $5}'

解释:DHCPACK行中,DHCP服务器IP是第5个字段(对应from后的内容),通过awk匹配该行并输出第5个字段即可。

  • 用grep正则匹配:
dhclient -v 2>&1 | grep -oP 'DHCPACK .* from \K[\d.]+'

解释:-P启用Perl正则,\K用于忽略前面的匹配内容,[\d.]+匹配IP格式的字符串。

2. 独立Bash脚本

将提取逻辑封装成可复用脚本,保存为get_dhcp_server.sh:

#!/bin/bash

# 捕获dhclient输出并提取DHCP服务器IP
dhcp_server_ip=$(dhclient -v 2>&1 | awk '/DHCPACK/ {print $5}')

# 验证提取结果
if [[ -n "$dhcp_server_ip" ]]; then
    echo "$dhcp_server_ip"
else
    echo "未能提取到DHCP服务器IP" >&2
    exit 1
fi

使用方法:

  1. 给脚本添加执行权限:chmod +x get_dhcp_server.sh
  2. 运行脚本:./get_dhcp_server.sh

内容的提问来源于stack exchange,提问作者user199727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:01:09