如果我用google检查,我可以看到我的公共IP。在Ubuntu的命令行中,是否有什么东西能让我得到同样的答案?
如果你不在路由器后面,你可以用ifconfig找出它。
ifconfig
如果你在路由器后面,那么你的电脑将不知道公共IP地址,因为路由器会进行网络地址转换。 你可以使用curl或wget询问一些网站你的公共IP地址是什么,然后从中提取你需要的信息。
curl
wget
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/
为了找到外部IP,你可以使用基于网络的外部服务,或者使用基于系统的方法。比较容易的是使用外部服务,同时基于ifconfig的解决方案只有在你不在NAT后面的情况下才会在你的系统中工作。下面详细讨论这两种方法。
最简单的方法是通过命令行浏览器或下载工具使用外部服务。由于Ubuntu中的`wget'是默认可用的,我们可以使用它。 要找到你的IP,可以使用--
$ wget -qO- https://ipecho.net/plain ; echo
礼尚往来。
你也可以用lynx'(浏览器)或curl'代替`wget',并对上述命令稍作改动,以找到你的外部IP。
lynx'(浏览器)或
使用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作为解析器。
这里的其他答案都是通过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 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
在上面,将`替换为你的实际接口的名称,例如: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'已被添加到基于
我正在使用的是:
wget -O - -q icanhazip.com
是的,你可以拥有ip :-)
如果你不在路由器后面,你可以用
ifconfig
找出它。如果你在路由器后面,那么你的电脑将不知道公共IP地址,因为路由器会进行网络地址转换。 你可以使用
curl
或wget
询问一些网站你的公共IP地址是什么,然后从中提取你需要的信息。为了找到外部IP,你可以使用基于网络的外部服务,或者使用基于系统的方法。比较容易的是使用外部服务,同时基于ifconfig的解决方案只有在你不在NAT后面的情况下才会在你的系统中工作。下面详细讨论这两种方法。
使用外部服务寻找外部IP
最简单的方法是通过命令行浏览器或下载工具使用外部服务。由于Ubuntu中的`wget'是默认可用的,我们可以使用它。
要找到你的IP,可以使用--
礼尚往来。
你也可以用
lynx'(浏览器)或
curl'代替`wget',并对上述命令稍作改动,以找到你的外部IP。使用
curl
来查找ip。为了获得更好的格式化输出,请使用。
一个更快的(可以说是最快的)方法,使用
dig
与OpenDNS
作为解析器。抄袭自: https://unix.stackexchange.com/a/81699/14497
在不依赖外部服务的情况下寻找外部IP
**如果你知道你的网络接口名称***
在你的终端键入以下内容。
在上面,将`
替换为你的实际接口的名称,例如:
eth0,
eth1,
pp0`,等等。示例用法:
如果你不知道你的网络接口名称
在你的终端键入以下内容(这会得到你系统中每个网络接口的名称和ip地址)。
示例用法:
注意:输出是指示性的,不是真实的。
提供: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
更新
LANG=c'已被添加到基于
ifconfig'的使用中,因此它总是给出英文输出,而不考虑locale设置。我正在使用的是:
是的,你可以拥有ip :-)