可以使用以下几种 bash 方法来获取 Linux 上网的 IP 地址:
方法一:使用 curl 命令(最常用、最准确)
# 获取 IPv4 地址
curl -4 ifconfig.me
# 或者使用其他服务
curl -4 icanhazip.com
curl -4 ip.sb
curl -4 ipinfo.io/ip
示例:
#!/bin/bash
# 将 IP 保存到变量
IP=$(curl -s -4 ifconfig.me)
echo "上网 IP 地址: $IP"
方法二:使用 wget 命令
# 获取 IPv4 地址
wget -qO- ifconfig.me
# 其他服务
wget -qO- icanhazip.com
wget -qO- ip.sb
方法三:使用 dig 命令(DNS 方式,不需要 HTTP)
# 通过 DNS 查询获取 IP
dig +short myip.opendns.com @resolver1.opendns.com
# 或者使用 Google 的 DNS
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | tr -d '"'
方法四:同时获取 IPv4 和 IPv6
#!/bin/bash
# 获取 IPv4
IPV4=$(curl -s -4 ifconfig.me)
echo "IPv4: $IPV4"
# 获取 IPv6(如果有)
IPV6=$(curl -s -6 ifconfig.me 2>/dev/null)
if [ -n "$IPV6" ]; then
echo "IPv6: $IPV6"
else
echo "IPv6: 不支持或未连接"
fi
方法五:本机命令方式(获取出口 IP)
如果需要获取本机默认路由的出口 IP,而不是公网 IP:
#!/bin/bash
# 方法1:使用 ip 命令
IP=$(ip -4 route get 1 | awk '{print $7;exit}')
echo "本机出口 IP: $IP"
# 方法2:使用 hostname 命令
hostname -I | awk '{print $1}'
# 方法3:查看默认网卡的 IP
ip addr show $(ip route | grep default | awk '{print $5}') | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
完整的脚本示例
#!/bin/bash
# 获取公网 IP 的函数
get_public_ip() {
local ip=""
# 尝试多个服务,直到成功
for service in "ifconfig.me" "icanhazip.com" "ip.sb" "ipinfo.io/ip"; do
ip=$(curl -s -4 --max-time 5 "$service" 2>/dev/null)
if [ -n "$ip" ] && [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "$ip"
return 0
fi
done
return 1
}
# 获取本机出口 IP 的函数
get_local_ip() {
ip -4 route get 1 2>/dev/null | awk '{print $7;exit}'
}
echo "=== IP 地址信息 ==="
echo "公网 IP: $(get_public_ip)"
echo "本机 IP: $(get_local_ip)"
常用的 IP 查询服务
| 服务地址 | 特点 |
|---|---|
ifconfig.me |
经典服务,稳定 |
icanhazip.com |
简单直接,支持 IPv4/IPv6 |
ip.sb |
速度快,支持自定义格式 |
ipinfo.io/ip |
只返回 IP,干净 |
api.ipify.org |
专门用于程序调用 |
注意事项
- 网络连接:确保服务器可以访问外网
- 超时设置:添加
--max-time 5防止卡住 - 错误处理:检查命令是否成功执行
- 代理影响:如果有代理,可能需要绕开
推荐使用:curl -s ifconfig.me 简单可靠,适合大多数场景。
##获得上网网卡mac
#!/bin/bash
# 获取默认路由的网卡名称
INTERFACE=$(ip route | grep default | awk '{print $5}')
# 获取该网卡的 MAC 地址
MAC=$(cat /sys/class/net/$INTERFACE/address)
echo "上网网卡: $INTERFACE"
echo "MAC 地址: $MAC"文档更新时间: 2026-03-08 13:43 作者:月影鹏鹏