python 获取本机ipv6
时间: 2023-06-26 16:07:30 浏览: 281
可以使用 `socket` 模块获取本机的 IPv6 地址。以下是一个示例代码:
```python
import socket
def get_ipv6():
# 获取所有网络接口
interfaces = socket.if_nameindex()
# 遍历所有网络接口,查找 IPv6 地址
for interface in interfaces:
ifname = interface[1]
# 获取网络接口的地址信息
addrs = socket.getaddrinfo(ifname, None)
# 遍历地址信息,查找 IPv6 地址
for addr in addrs:
if addr[0] == socket.AF_INET6:
ip = addr[4][0]
if ip.startswith("fe80"):
continue # 忽略本地链路地址
return ip
return None # 没有找到 IPv6 地址
if __name__ == "__main__":
print(get_ipv6())
```
注意,IPv6 地址通常比较长,可能会超出终端窗口的宽度。可以使用 `ipaddress` 模块将地址转换为更可读的格式。例如:
```python
import ipaddress
ipv6 = "2001:db8:85a3::8a2e:370:7334"
addr = ipaddress.IPv6Address(ipv6)
print(addr.compressed) # 输出:2001:db8:85a3::8a2e:370:7334
print(addr.exploded) # 输出:2001:0db8:85a3:0000:0000:8a2e:0370:7334
```
以上代码将 IPv6 地址转换为简化格式和扩展格式。
阅读全文