具体来说,我正在寻找一种方法来判断系统是否具有配置有全局范围 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 版本中提供了足够相似的输出以供使用。
我还缺少其他工具吗?