如何使用 TCL/Perl 规范化 IPv6 ip?
How to normalize IPv6 ip using TCL/Perl?
我想把短格式的IPv6 ip转换成扩展格式。可以说我有 ipv6 ip 作为 fe80::1 到 fe80:0000:0000:0000:0000:0000:0000:0001 和 fe80:0010::1 作为 fe80:0010:0000:0000:0000:0000:0000:0001 等等。你能帮助使用 TCL 或 Perl 或 Python 语言编写脚本吗?
代码应该是动态的,这样无论我给出什么格式,扩展都应该是扩展格式。
对于Python,我建议使用netaddr to deal with IP addresses of any kind. In your case it has the ability to format IPv6 in different forms/dialects。
对于您的特定用例,您应该能够做到:
import netaddr
ip = netaddr.IPAddress("fe80::1")
print ip.format(dialect=netaddr.ipv6_verbose)
在 Perl 中,使用 Net::IP
模块:
$ perl -MNet::IP=:PROC -le'print ip_expand_address("fe80::1", 6);'
fe80:0000:0000:0000:0000:0000:0000:0001
在 Tcl 中,使用 ip
包:
% package require ip
1.2.2
% ::ip::normalize fe80::1
fe80:0000:0000:0000:0000:0000:0000:0001
文档:ip 包
我想把短格式的IPv6 ip转换成扩展格式。可以说我有 ipv6 ip 作为 fe80::1 到 fe80:0000:0000:0000:0000:0000:0000:0001 和 fe80:0010::1 作为 fe80:0010:0000:0000:0000:0000:0000:0001 等等。你能帮助使用 TCL 或 Perl 或 Python 语言编写脚本吗?
代码应该是动态的,这样无论我给出什么格式,扩展都应该是扩展格式。
对于Python,我建议使用netaddr to deal with IP addresses of any kind. In your case it has the ability to format IPv6 in different forms/dialects。
对于您的特定用例,您应该能够做到:
import netaddr
ip = netaddr.IPAddress("fe80::1")
print ip.format(dialect=netaddr.ipv6_verbose)
在 Perl 中,使用 Net::IP
模块:
$ perl -MNet::IP=:PROC -le'print ip_expand_address("fe80::1", 6);'
fe80:0000:0000:0000:0000:0000:0000:0001
在 Tcl 中,使用 ip
包:
% package require ip
1.2.2
% ::ip::normalize fe80::1
fe80:0000:0000:0000:0000:0000:0000:0001
文档:ip 包