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

Mik*_*Kay 6 command-line

似乎有一个名为的包geoclue,它使用 Mozilla 的位置服务来查找无线接入点及其已知位置,但似乎没有用于此的命令行界面。还有另一种方法吗?任何聪明的黑客?

phi*_*hem 4

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

wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php
Run Code Online (Sandbox Code Playgroud)


Mik*_*Kay 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
Run Code Online (Sandbox Code Playgroud)

这导致:

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
Run Code Online (Sandbox Code Playgroud)

这是向前迈出的一大步,但似乎所有提供商都在使用基于 IP 的查找,而我的 VPN 完全无法做到这一点。似乎应该有一个仅使用 wifi 接入点的提供商,但我还没有找到。