如果你不在路由器后面,你可以用ifconfig
找出它。
如果你在路由器后面,那么你的电脑将不知道公共IP地址,因为路由器会进行网络地址转换。 你可以使用curl
或wget
询问一些网站你的公共IP地址是什么,然后从中提取你需要的信息。
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
或更短
curl https://ipinfo.io/ip
为了找到外部IP,你可以使用基于网络的外部服务,或者使用基于系统的方法。比较容易的是使用外部服务,同时基于ifconfig的解决方案只有在你不在NAT后面的情况下才会在你的系统中工作。下面详细讨论这两种方法。
最简单的方法是通过命令行浏览器或下载工具使用外部服务。由于Ubuntu中的`wget'是默认可用的,我们可以使用它。
要找到你的IP,可以使用--
$ wget -qO- https://ipecho.net/plain ; echo
礼尚往来。
你也可以用lynx'(浏览器)或
curl'代替`wget',并对上述命令稍作改动,以找到你的外部IP。
使用curl
来查找ip。
$ curl https://ipecho.net/plain
为了获得更好的格式化输出,请使用。
$ curl https://ipecho.net/plain ; echo
dig
与OpenDNS
作为解析器。这里的其他答案都是通过HTTP到一个远程服务器。其中一些 它们需要对输出进行解析,或者依靠User-Agent标头 来使服务器以纯文本方式响应。它们的变化也很 经常改变(倒闭、改名、贴广告、可能改变 输出格式等)。)
1.DNS响应协议是标准化的(格式将保持兼容)。 历史上的DNS服务(OpenDNS,谷歌公共DNS,......)往往存活得更久,更稳定,可扩展,通常被视为 比起什么新的时髦的whatismyip.com HTTP服务今天的热度。 3.(对于那些关心微观优化的极客来说),这种方法应该在本质上更快(即使只是几个微秒)。
使用Dig与OpenDNS作为解析器。
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
抄袭自: https://unix.stackexchange.com/a/81699/14497
**如果你知道你的网络接口名称***
在你的终端键入以下内容。
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
在上面,将<interface_name>
替换为你的实际接口的名称,例如:eth0
,eth1
,pp0
,等等。
示例用法:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
如果你不知道你的网络接口名称
在你的终端键入以下内容(这会得到你系统中每个网络接口的名称和ip地址)。
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
示例用法:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
注意:输出是指示性的,不是真实的。
提供: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
更新
LANG=c'已被添加到基于
ifconfig'的使用中,因此它总是给出英文输出,而不考虑locale设置。