如何从命令行通过 IP 获取我当前的位置/坐标?

如何从命令行通过 IP 获取我当前的位置/坐标?

似乎有一个名为的软件包geoclue,它使用 Mozilla 的位置服务来查找无线接入点及其已知位置,但似乎没有用于此的命令行界面。还有其他方法吗?有什么巧妙的技巧吗?

答案1

如果您想要基于 IP 的查找...(但您必须修复输出的 HTML 格式)

wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php

答案2

这是我自己的最佳答案,它尝试了 Ubuntu 中所有可用的不同 geoclue 提供程序:

apt-get install geoclue geoclue-ubuntu-geoip python-geoclue geoclue-yahoo geoclue-plazes geoclue-localnet geoclue-gypsy

echo "#!/usr/bin/env python

import Geoclue

providers = 'Gypsy, Hostip, Localnet, Plazes, Skyhook, Yahoo, Ubuntu GeoIP'
providers = providers.split(', ')
for provider in providers:

  POS_PROVIDER = provider

  location = Geoclue.DiscoverLocation()
  location.init()
  location.set_position_provider(POS_PROVIDER)
  position = location.get_location_info()

  print provider
  print position['latitude']
  print position['longitude']
" > location.py

python location.py

其结果是:

Gypsy
0.0
0.0
Hostip
39.8121
-76.9837
Localnet
39.8121
-76.9837
org.freedesktop.DBus.GLib.UnmappedError.GeoclueErrorQuark.Code1: Could not understand reply from server
Plazes
39.8121
-76.9837
org.freedesktop.DBus.GLib.UnmappedError.GeoclueErrorQuark.Code1: Couldn't parse response from web service
Skyhook
39.8121
-76.9837
Yahoo
39.8121
-76.9837
Ubuntu GeoIP
40.6501
-73.9496

这是一大进步,但似乎所有提供商都使用基于 IP 的查找,而我的 VPN 完全颠覆了这一点。似乎应该有一个仅使用 wifi 接入点的提供商,但我还没有找到。

答案3

要通过 IP 获取您的位置,您可以使用:

curl -s http://whatismycountry.com/ | sed -n 's|.*> *\(.*\)</h3>|\1|p'

要通过 IP 获取坐标,您可以使用:

curl -s http://whatismycountry.com/ | sed -n 's/.*Coordinates \(.*\)<.*/\1/p'

答案4

有一种解决方法是使用您的 IP 并根据您的真实 IP 查找您的位置。

首先安装 lnyx

sudo apt-get install lynx-cur

现在命令是:

lynx -dump http://www.ip-adress.com/ip_tracer/?QRY=$1|grep address|egrep 'city|state|country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 's\ip address flag \\'|sed 's\My\\'

相关内容