![图片[1]-使用命令行提取公网 IPv6 地址-天煜博客](https://blog.itianyu.cn/wp-content/uploads/2026/01/20260120115508443-image.png)
以下命令旨在在不同操作系统中提取第一个、非临时、非本地链接(fe80)、非回环(::1)的纯净公网 IPv6 地址。
1. Windows (CMD)
适用于 Windows 10 / Windows 11。该命令通过行号过滤,强制只截取第一行结果,完美避开多网卡或多 IP 导致的输出混乱问题。
for /f "tokens=2* delims=:" %a in ('ipconfig ^| findstr "IPv6" ^| findstr /v "临时 Temporary" ^| findstr /v "fe80" ^| findstr /n . ^| findstr "^1:"') do @for /f "tokens=*" %c in ("%b") do @echo %c
- 逻辑解析:
findstr /v "临时 Temporary":排除隐私扩展生成的临时 IPv6 地址。
findstr /v "fe80":排除本地链接地址。
findstr /n . | findstr "^1:":给结果加上行号并只取第一行(解决多 IP 输出问题)。
tokens=2*与delims=::精准切割冒号后的 IP 字符串。
- 逻辑解析:
2. Linux (Ubuntu 24 / Debian / CentOS)
现代 Linux 发行版推荐使用 ip 命令(iproute2),它比老旧的 ifconfig 更容易通过 scope 参数进行过滤。
ip -6 addr show scope global | grep inet6 | grep -v temporary | head -n 1 | awk '{print $2}' | cut -d/ -f1
- 逻辑解析:
scope global:直接仅显示全局范围地址(自动排除fe80和::1)。
grep -v temporary:排除动态临时地址。
cut -d/ -f1:去除 CIDR 后缀(如/64),只保留 IP 地址。
- 逻辑解析:
3. macOS (Terminal)
macOS 使用 BSD 风格的 ifconfig。由于 macOS 默认将回环地址(Loopback)放在首位,因此必须显式排除 ::1。
ifconfig | grep "inet6 " | grep -v -e "fe80" -e "temporary" -e "::1" | awk '{print $2}' | head -n 1
- 逻辑解析:
grep "inet6 ":筛选 IPv6 行(注意末尾空格,防止匹配到 tunnel 等干扰项)。
grep -v -e ...:同时排除本地链路 (fe80)、临时地址 (temporary) 和回环地址 (::1)。
awk '{print $2}':直接提取第二列的 IP 地址。
- 逻辑解析:
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END












暂无评论内容