これを行う方法はたくさんあります。
ここに 1 つがあります:
ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
アドレスのみを削除する点を除いて、Robert の回答に似ています。
以下を使用できます:
ip -6 addr
構成したすべての IPv6 アドレスが返されます。
Linux を使用している場合は、/proc/net/if_inet6
も解析できます。
最初の列はコロンなしの完全な IPv6 です。6 番目の列はインターフェース名です。
ここでは、最適化されていないかなり長いバージョン (awk の基本のみを説明します) 多分 python/perl の方が良い選択です.
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
GNU awk (gawk) を使用している場合、これは次のように短縮できます:
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
後で使用するために {ba,z,}sh 関数に入れることができます。