當前位置: 首頁>>技術教程>>正文


linux – 在bash中,檢測公共IP地址的方法

, , , ,

問題描述

作為安裝腳本的一部分,我想對機器的公共IP地址進行”educated guess”。它應在各種主機和平台上工作時,應盡可能強大。這是一個例子:

https://gist.github.com/4669037

該腳本使用3種方法,然後默認為/etc/hostname的值。到目前為止,我僅在Ubuntu上進行了測試。這可能會在其他發行版上起作用嗎?還有我可以添加的其他方法嗎?

最佳回答

curl ipinfo.io/ip

要麽

wget -qO- ipinfo.io/ip

要麽

lynx -source ipinfo.io/ip

get public ip address

次佳回答

如果您沒有 curl ,curl ifconfig.me將是最佳選擇:

wget -qO- ifconfig.me/ip

第三種回答

您要尋找多少個公共IP?如果計算機位於NAT之後怎麽辦?

  • curl /wget /netcat(nc)包含請求者地址的<URL>:大多數時候都可以使用,但是該站點可能無法從計算機訪問(由於防火牆或臨時/永久性)。您將獲得最多的公共IP。

  • ifconfig:必須以root身份運行,否則,您還必須嘗試/sbin/ifconfig/usr/sbin/ifconfig。如果計算機具有更多NIC怎麽辦?您如何判斷哪種IP是正確的?如果僅在計算機的LAN上使用IPv6,該怎麽辦?無論如何,您將獲得的公共IP最少(如果在計算機上配置了更多接口,則可能是一個錯誤的IP-如今,使用網絡分接頭設備和/或無所不在的虛擬化通常是這種情況)。

  • /etc/hostname:不需要存在,在許多係統上是/etc/HOSTNAME,它不包含IP地址,而應包含主機名(通常為FQDN)。

關鍵是,它可能會失敗的方式很多,您可能應該考慮a)更精確地指定目標係統,或者b)是否真的需要了解IP,這是一個解決方案,在簡單情況下可以工作,但在稍微複雜一些的設置中卻​​失敗了,值得使用嗎?如果您認為需要IP,則準備一種方法來在根本不獲取IP或獲取錯誤IP的情況下優雅地處理故障。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/9722.html,未經允許,請勿轉載。