似乎有一个名为的软件包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\\'