2

具体来说,我正在寻找一种方法来判断系统是否具有配置有全局范围 IPv6 地址的网络接口。环回和链接范围的地址“不算数”。

我想要实现的是匹配是否将返回任何带有提示标志getaddrinfo()的 IPv6 地址。AI_ADDRCONFIG

我可以通过编写一些代码来使用getaddrinfo(). 但这是一个相当复杂的构建过程的测试的一部分,不必为了测试这个相当简单的东西而构建可执行文件会简单得多。

到目前为止我发现的最好的只适用于 Linux,并使用ip最近发行版附带的命令。

if ip -f inet6 -o addr | cut -f 9 -s -d' ' | grep global > /dev/null ; then
    echo "IPv6 addresses configured continuing"
else
    echo "No global IPv6 addresses configured - skipping test"
    exit 0
fi

然而,这依赖于ip我怀疑可以保证的输出的当前格式,并且在其他版本的 Unix(例如 FreeBSD)上不存在。

我不认为 ifconfig 在不同的 Unix 版本中提供了足够相似的输出以供使用。

我还缺少其他工具吗?

4

1 回答 1

0

现在,查看您是否至少有一些 v6 连接的好方法是检查结果

ping6 -c 10 ipv6.google.com

然而,它是一个kludge。但在某种程度上,它应该适用于大多数 unice,甚至更多。

于 2012-07-13T02:10:28.440 回答