网上都是关于IPv6补全的,今天我提供一下IPv6完成简写的方法,如下:
sh解析器:
#!/bin/sh
function expand_ipv6() {
# input: ::
# output: 0:0:0:0:0:0:0:0
# input: 2001:2d:1f::1
# output: 2001:2d:1f:0:0:0:0:1
local ipv6=${1}
local colon_num=$(echo ${ipv6} | awk '{print gsub(/:/, "")}')
local replace_str=""
local i=0
while [ $colon_num -lt 7 ]
do
replace_str="${replace_str}:0"
colon_num=`expr $colon_num + 1`
done
replace_str="${replace_str}:"
local ipv6_expanded=${ipv6/::/$replace_str}
[[ ${ipv6_expanded} == *: ]] && ipv6_expanded="${ipv6_expanded}0"
[[ ${ipv6_expanded} == :* ]] && ipv6_expanded="0${ipv6_expanded}"
echo ${ipv6_expanded}
}
function expand_expanded_ipv6() {
# input: 0:0:0:0:0:0:0:0
# output: 0000:0000:0000:0000:0000:0000:0000:0000
# input: 2001:2d:1f:0:0:0:0:1
# output: 2001:002d:001f:0000:0000:0000:0000:0001
expanded_ipv6=${1}
x=${expanded_ipv6//:/ }
set $x
local j=0
local hex_arr=""
for i in "$@"
do
j=`expr $j + 1`
if [ ${#i} -eq 1 ]
then
hex_arr=&