linux 脚本 ipv6登录,Linux中获取本机的最新IPv6地址_更新ddns的脚本

运营商提供ipv6地址。 路由器后有台linux机器,通过eui64方式自动配置ipv6地址。 但是,运营商会定时强制路由器重拨,导致ipv6的前缀(prefix)变化。 虽然linux会马上自动配置新的ipv6地址。但旧的ipv6地址不会马上消失。 旧ipv6需要等超时expired后才删除,有时要等2000多秒(30多分钟)。 这段时间主机会有两个ipv6地址。如果不能正确找出新的ipv6地址去更新ddns,则这段时间无法访问主机。

通过查看 ip addr show 发现每个ip后面一行给出了expired时间。 新ip的expired时间总是比旧ip大。这样就可以找出最新的ipv6地址了。

以下是shell脚本,会显示出ipv4地址,和最新的ipv6(eui64)地址。

#!/bin/sh

ip addr show|grep -A1 'inet [^f:]'|sed -nr 's#^ +inet ([0-9.]+)/[0-9]+ brd [0-9./]+ scope global .*#\1#p'

ip addr show|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|grep 'ff:fe'|sort -nr|head -n1|cut -d' ' -f2

显示ipv6的脚本执行步骤是,

ip addr show

去除 deprecated 地址

挑出inet6地址,并同时显示下一行

把expired时间和ipv6地址,

你可能感兴趣的:(linux,脚本,ipv6登录)