类似于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
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