2024年9月22日星期日

Linux通过命令获取有效的IPv6地址

先直接给出命令:

ip -6 addr show eth0 | grep -v deprecated | grep 'inet6 [^f:]' | awk -F' ' '{print $2}' | awk -F'/' '{print $1}' | tail -1

根据经验观察,使用ip -6 addr show ifce获取到的ipv6地址,排在最后面的那个就是最新的那个,也就是valid_lft最长的那一个。

所以这个命令的原理就是:用ip -6 addr获取ipv6地址,然后选择排在最后面那一个。

然后是步骤拆解:

ip -6 addr show eth0,显示网卡(eth0)的全部ipv6地址

grep -v deprecated,去除已经失效(deprecated)的地址

grep 'inet6 [^f:]',显示有ipv6地址的那一行(不包含f开头的内网ipv6地址)

awk -F' ' '{print $2}',根据空格符号分列,打印第二列

awk -F'/' '{print $1}',根据斜杠符号/分列,打印第一列

tail -1,显示最后一行