如何使用 shell 验证 IPv6 地址格式?

Qiu*_*fan 6 validation bash shell ipv6

在我的 shell 中,我需要检查字符串是否是有效的 IPv6 地址。

我找到了两种方法,对我来说它们都不够理想。

一个是http://twobit.us/2011/07/validating-ip-addresses/,而我想知道对于如此常见的要求是否必须如此复杂。

另一种是在shell脚本中扩展ipv6地址,这很简单,但对于Linux的主要发行版,sipcalc并不是一个常见的默认实用程序。

所以我的问题是,是否有一种简单的方法或实用程序可以使用 shell 验证 IPv6 地址?

提前致谢。

小智 4

大多数发行版都预装了 iproute2 包(名称可能有所不同)。所以你可以依靠命令 ip 来查询路由表:

ip -6 route get <probe_addr>/128 >/dev/null 2>&1 
Run Code Online (Sandbox Code Playgroud)

即使在没有适当路由的机器上,当探测器采用有效的 v6 语法时,也会传递 rc=0。

另请参考grandcentral的答案,rc==1表示无效的IPv6地址。