Algo como
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1
fornecerá o endereço completo em hexadecimal. Você ainda precisa inserir os :
separadores, se desejar. (Você não disse por que você precisava de todos os zeros - qualquer coisa que precise de :
também aceitará formulários curtos com ::
).
Editar
Para o prefixo de um DNS PTR, algo como
grep eth0 /proc/net/if_inet6 | cut -d' ' -f1 | rev | sed 's/./&./g'
Observe que ele retornará todos endereços IPv6 para essa interface, portanto, é necessário iterar.
Além disso, se você precisar definir entradas de PTR do DNS a partir do IPv6 existente nas interfaces, muito provavelmente algo na maneira como você lida com o DNS está muito errado. Normalmente, você faz o inverso: seja qual for a origem das suas entradas DNS, isso também deve determinar o (s) endereço (s) na (s) sua (s) interface (s).