在linux系统中可以轻松获取本地ip地址,系统内置了多个网络配置相关的命令,同时也支持通过脚本调用系统接口实现地址获取,满足不同场景下的使用需求。
使用ip命令获取本地IP地址
ip命令是linux系统中较新的网络配置工具,功能比传统的ifconfig更强大,默认在大多数主流linux发行版中都是预装的。要获取本地所有网卡的ip地址,可以执行以下命令:
# 查看所有网卡的ip地址信息 ip addr show
如果只需要获取指定网卡(比如eth0)的ip地址,可以执行以下命令:
# 获取eth0网卡的ipv4地址
ip addr show eth0 | grep -oP '(?<=inets)d+(.d+){3}'
上述命令中,ip addr show eth0用于展示eth0网卡的详细地址信息,grep配合正则表达式提取出inet后面的ipv4地址内容。
使用ifconfig命令获取本地IP地址
ifconfig是传统的linux网络配置命令,部分较新的发行版可能没有预装,需要先安装net-tools工具包。获取本地ip地址的基础命令如下:
# 查看所有网卡的配置信息 ifconfig
如果只需要提取指定网卡的ip地址,可以使用以下命令:
# 获取eth0网卡的ipv4地址
ifconfig eth0 | grep -oP '(?<=inets)d+(.d+){3}'
使用hostname命令获取本地IP地址
hostname命令除了可以查看或设置主机名之外,也可以直接获取本地主机的ip地址,适合快速查询使用,命令如下:
# 获取本地主机的ip地址 hostname -I
该命令会直接输出当前主机所有网卡的ip地址,多个地址之间用空格分隔,不需要额外处理就能快速得到结果。
通过脚本获取指定网卡的本地IP地址
如果需要在shell脚本中自动获取本地ip地址,可以编写如下的脚本实现:
#!/bin/bash
# 定义要获取IP的网卡名称,默认为eth0
NIC_NAME="eth0"
# 获取对应网卡的ipv4地址
LOCAL_IP=$(ip addr show $NIC_NAME | grep -oP '(?<=inets)d+(.d+){3}')
# 判断地址是否获取成功
if [ -z "$LOCAL_IP" ]; then
echo "未获取到$NIC_NAME网卡的IP地址"
else
echo "$NIC_NAME网卡的本地IP地址是:$LOCAL_IP"
fi
将上述内容保存为get_local_ip.sh,添加执行权限后运行,就可以得到指定网卡的本地ip地址。
不同获取方式的对比
以下是几种常用获取方式的对比:
| 获取方式 | 适用场景 | 优势 | 不足 |
|---|---|---|---|
| ip addr show | 需要查看详细网卡配置信息 | 信息全面,支持正则提取 | 输出内容较多,需要过滤 |
| ifconfig | 习惯使用传统命令的用户 | 输出格式直观 | 部分新系统未预装 |
| hostname -I | 快速获取所有网卡IP | 命令简单,输出简洁 | 无法指定单个网卡 |
| 自定义脚本 | 自动化任务、批量获取 | 可定制,适合复用 | 需要额外编写脚本 |
linux本地IP地址ip命令ifconfig命令hostname命令修改时间:2026-06-15 21:39:22