我使用的是 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:
但正如你所看到的,它只暴露了局域网中机器的IP地址。我有兴趣了解全世界的知识产权。
答案1
这会将您的公共 IP 返回给您
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
答案2
您的意思是您的 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]
我已将我的 IP 更改为通用的不可路由的 IP,并为您将其加粗。
如果你只想要IP,你需要从那里解析它——快速而肮脏,但它对我有用。我百分百肯定有更好更安全的方法......
wget http://checkip.dyndns.org -O - | grep IP | cut -f 2- -d : | cut -f 1 -d \<
这会给你
192.168.1.199
答案3
替代方案(避免解析):
获取 IPv4
curl -4 icanhazip.com
获取 IPv6
curl -6 icanhazip.com