expand ipv6 address in shell script
ipv6, shell
Solution
Using `sipcalc` might do it. It gives more information than you need, but a bit of `grep` and `cut` can solve that :-)
$ EXPANDED=`sipcalc 2001::1 | fgrep Expanded | cut -d '-' -f 2`
$ echo $EXPAND
2001:0000:0000:0000:0000:0000:0000:0001
For reference, this is the full output of `sipcalc`:
$ sipcalc 2001::1
-[ipv6 : 2001::1] - 0
[IPV6 INFO]
Expanded Address - 2001:0000:0000:0000:0000:0000:0000:0001
Compressed address - 2001::1
Subnet prefix (masked) - 2001:0:0:0:0:0:0:1/128
Address ID (masked) - 0:0:0:0:0:0:0:0/128
Prefix address - ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Prefix length - 128
Address type - Aggregatable Global Unicast Addresses
Network range - 2001:0000:0000:0000:0000:0000:0000:0001 -
2001:0000:0000:0000:0000:0000:0000:0001
Problem
I'd like to update a djbdns (dbndns) configuration file based on a given IPv6 address, e.g. `2a01:488:66:1000:523:f116:0:1` or `::1`. dbndns requires expanded IPv6 addresses, e.g. `2a010488006610000523f11600000001` for `2a01:488:66:1000:523:f116:0:1`. What's the most simple way to expand such an IPv6 address?