我可以使用什么* nix命令来查找我的外部IP?

类似于http://whatismyip.com查找。 显然需要在那里查询一台电脑。 只是想知道是否有人有一个聪明的方法来做到这一点?

curl http://myip.dnsomatic.com 
挖+短myip.opendns.com

这只适用于你使用OpenDNS作为你的DNS服务器。

如果你不是,其中一个应该工作:

挖+短myip.opendns.com @ 208.67.222.222
挖+短myip.opendns.com @ 208.67.220.220
挖+短myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

STUN是正确的解决scheme。

 %stun -v stun.ekiga.net
 ...
 MappedAddress = 88.189.152.187:18009
  • 公共STUN服务器列表
  • 一个免费的软件STUN客户端
  • STUN标准
 lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}' 

一个人必须使用OpenDNS的服务器来使用这个…你可以用这样的方式查询某个DNS服务器:

 挖+短myip.opendns.com @ 208.67.222.222 

你可以使用curl从whatismyip之类的东西获取页面,然后把它们分离出来。 在这个例子中,我使用了whatismyipaddress.com …显然这些字段会因不同的服务而有所不同。

 curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }' 

我只是运行一个traceroute到互联网上的某个地方,并寻找跳出我们的本地networking。

也许有更好的办法?

“l http: // http://whatismyip.com

您可以使用ifconfig命令列出所有接口及其关联的IP地址。

所以,如果你知道你的networking接口是ppp0,你可以运行

 $ ifconfig ppp0
 ppp0链接封装:点对点协议
           inet addr:XXXX.X PtP:YYYY掩码:255.255.255.255
           UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1444公制:1
           RX数据包:198986错误:0丢弃:0超限:0帧:0
           TX数据包:122929错误:0丢弃:0超限:0载波:0
          碰撞:0 txqueuelen:3
           RX字节:134195571(127.9 MiB)TX字节:17101701(16.3 MiB)

XXXX将成为您的IP地址。 YYYY是下一跳的IP地址。

然后你可以使用grep / awk / sed / cut / perl /任何后处理ifconfig的输出来提取IP。

另一种方法是,如果你安装了iproute工具,就是使用ip命令。 例如

 $ ip addr list ppp0
 21842:ppp0:mtu 1444 qdisc htb状态UNKNOWN qlen 3
    链接/ PPP
     inet XXXX peer YYYY / 32 scope global ppp0

这可能更容易阅读,当然也更容易parsing:

 $ ip addr list ppp0 |  awk'/ inet / {print $ 2}'
 XXXX

最简单的方法是:curl ifconfig.me