Ci sono molti modi per farlo.
Eccone uno:
ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
È simile alla risposta di Robert, tranne per il fatto che toglie solo l'indirizzo.
Potresti usare:
ip -6 addr
Restituirà tutti gli indirizzi IPv6 che hai configurato.
Se sei sotto Linux puoi anche analizzare:/proc/net/if_inet6
La prima colonna è l'IPv6 completo senza i due punti. La sesta colonna è il nome dell'interfaccia.
Qui una versione non ottimizzata piuttosto lunga (ho solo ora le basi di awk) Forse python/perl è una scelta migliore.
for i in "$(grep enp0s25 /proc/net/if_inet6)"; do
echo "$i" | awk '{
split($1, _, "[0-9a-f]{,4}", seps)
joined = sep = ""
for (i=1; i in seps; i++) {
joined = joined sep seps[i]
sep = ":"
}
print joined
}'
done
Se hai GNU awk (gawk) questo può essere abbreviato in:
for i in "$(grep enp0s25 /proc/net/if_inet6)"; do
echo "$i" | gawk '@include "join"
{
split($1, _, "[0-9a-f]{,4}", seps)
print join(seps, 1, length(seps), ":")
}'
done
Puoi inserirlo in una funzione {ba,z,}sh per usarlo in seguito.