Il existe de nombreuses façons de procéder.
En voici un :
ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
C'est similaire à la réponse de Robert, sauf que l'adresse n'est supprimée que.
Vous pouvez utiliser :
ip -6 addr
Il renverra toutes les adresses IPv6 que vous avez configurées.
Si vous êtes sous Linux, vous pouvez également analyser :/proc/net/if_inet6
La première colonne est l'IPv6 complet sans deux-points. La sixième colonne est le nom de l'interface.
Voici une version assez longue non optimisée (je ne connais que maintenant les bases d'awk)Peut-être que python/perl est un meilleur choix.
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
Si vous avez GNU awk (gawk), cela peut être raccourci en :
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
Vous pouvez le mettre dans une fonction {ba,z,}sh pour l'utiliser plus tard.