SERVER_MAC="b4:2e:99:ce:7f:44"
mac_to_ipv6 () {
mac=$1
prefix=$2
IFS=':'; set $prefix; unset IFS
prefix=$1:$2:$3:$4
IFS=':'; set $mac; unset IFS
ipv6="$prefix:$(printf %02x $((0x$1 ^ 2)))$2:${3}ff:fe$4:$5$6"
ipv6="${ipv6//::::/::}"
ipv6="${ipv6//:::/::}"
echo $ipv6
}
local_v6=$(mac_to_ipv6 $SERVER_MAC fe80)
Это будет локальный адрес на интерфейсе, если нужен глобальный - вместо fe80 нужен префикс подсети.