Dafür gibt es viele Möglichkeiten.
Hier ist einer:
ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
Es ähnelt Roberts Antwort, außer dass nur die Adresse entfernt wird.
Sie könnten Folgendes verwenden:
ip -6 addr
Es werden alle von Ihnen konfigurierten IPv6-Adressen zurückgegeben.
Unter Linux können Sie auch Folgendes parsen:/proc/net/if_inet6
Die erste Spalte ist die vollständige IPv6 ohne Doppelpunkte. Die sechste Spalte ist der Schnittstellenname.
Hier eine ziemlich lange nicht optimierte Version (ich habe jetzt erst die Grundlagen von awk kennengelernt). Vielleicht ist Python/Perl die bessere Wahl.
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
Wenn Sie GNU awk (gawk) haben, kann dies verkürzt werden zu:
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
Sie können es in eine {ba,z,}sh-Funktion einfügen, um es später zu verwenden.