如何从命令行获取我的 IP 地址?

Dav*_*ave 7 linux networking debian ifconfig ip-address

我使用的是 Debian 8。如何从命令行获取我的外部 IP 地址?我认为下面的命令可以完成这项工作......

myuser@myserver:~ $ /sbin/ifconfig $1 | grep "inet\|inet6" | awk -F' ' '{print $2}' | awk '{print $1}'
addr:192.168.0.114
addr:
addr:127.0.0.1
addr:
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,它只显示局域网中机器的 IP 地址。我有兴趣了解其面向全世界的 IP。

小智 15

这将返回给您您的公共 IP

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Run Code Online (Sandbox Code Playgroud)


iva*_*van 10

您的意思是您的 dsl/电缆调制解调器/等的任何可路由 IP。路由器有?

您需要查询该设备或询问外部服务器在您连接到它时它看到的 IP。最简单的方法是在谷歌搜索“我的ip是什么”,就像计算搜索一样,它会在第一个搜索结果中告诉你。如果您想从命令行执行此操作,您需要检查一些脚本的输出,这些脚本将回显信息。动态 dns 服务 dyndns.org 有一个你可以使用 - 试试这个命令

wget http://checkip.dyndns.org -O -

你应该得到类似的东西

HTTP request sent, awaiting response... 200 OK
Length: 105 [text/html]
Saving to: ‘STDOUT’

-                     0%[                    ]       0  --.-KB/s               <html><head><title>Current IP Check</title></head><body>Current IP Address: 192.168.1.199</body></html>
-                   100%[===================>]     105  --.-KB/s    in 0s      

2017-09-20 14:16:00 (15.4 MB/s) - written to stdout [105/105]
Run Code Online (Sandbox Code Playgroud)

我已将我的 IP 更改为通用的不可路由并为您加粗。

如果你只想要 IP,你需要从那里解析它 - 快速而肮脏,但它对我有用。而且我 100% 肯定有更好更安全的方法来做到这一点......

wget http://checkip.dyndns.org -O - | grep IP | cut -f 2- -d : | cut -f 1 -d \<

这会给你

192.168.1.199


小智 6

替代方案(避免解析):

获取 IPv4

curl -4 icanhazip.com
Run Code Online (Sandbox Code Playgroud)

获取 IPv6

curl -6 icanhazip.com
Run Code Online (Sandbox Code Playgroud)