具體而言,我正在尋找一種方法來判斷系統是否具有配置爲全局範圍的範圍的IPv6地址的網絡接口。環回和鏈接作用域地址「不計數」。有沒有一種使用unix shell命令來判斷是否有配置的IPv6接口的便攜方式?
我想要達到的是匹配getaddrinfo()
是否會返回任何IPv6地址與AI_ADDRCONFIG
提示標誌。
我可以通過使用getaddrinfo()
來編寫一些查找IPv6回送地址(「:: 1」)的代碼。但是這是一個相當複雜的構建過程的測試的一部分,並且爲了測試這個相當簡單的事情而不必構建可執行文件就簡單多了。
迄今爲止發現的最好的只適用於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版本中提供了類似的足夠輸出以供使用。
有沒有其他工具我失蹤?
我不認爲你可以找到一個安裝在任何地方並具有一致輸出格式的工具。不過,也許你可以製作一個簡單的Perl或Python腳本。 – tripleee 2012-07-06 12:27:27
您一定要編寫腳本,ifconfig在unix平臺上給出類似的結果,例如,所有ipv6地址都以inet6開頭。有一點Perl應該在這裏完成這項工作,當然是任何以fe80或fec0開頭的ipv6地址,那麼我們只是忽略它,因爲它是一個鏈接本地/站點本地地址。 –
display101
2012-07-06 15:28:20