Se você quiser pesquisa baseada em IP ... (mas você terá que corrigir o formato HTML da saída)
wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php
Parece que existe um pacote chamado geoclue
que usa o serviço de localização do Mozilla para procurar pontos de acesso sem fio e sua localização conhecida, mas não parece haver uma interface de linha de comando para isso. tem outro jeito de fazer isto? Quaisquer hacks inteligentes?
Se você quiser pesquisa baseada em IP ... (mas você terá que corrigir o formato HTML da saída)
wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php
Para obter sua localização por IP, você pode usar:
curl -s http://whatismycountry.com/ | sed -n 's|.*> *\(.*\)</h3>||p'
Para obter suas coordenadas por IP, você pode usar:
curl -s http://whatismycountry.com/ | sed -n 's/.*Coordinates \(.*\)<.*//p'
Aqui está a minha melhor resposta, que experimenta todos os diferentes provedores de geociência disponíveis no Ubuntu:
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
Isso resulta em:
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
O que é um grande passo à frente, mas parece que todos os provedores estão usando a pesquisa baseada em IP, e minha VPN rejeita totalmente isso. Parece que deve haver um provedor que use apenas pontos de acesso Wi-Fi, mas ainda não o encontrei.
Aqui está um script Python 2.x similar ao postado por @Mike McKay, que usará todos os provedores Geoclue disponíveis e exibirá suas informações de localização em um formato bem impresso (requer apt-get install python-geoclue
):
#!/usr/bin/env python
from __future__ import print_function
import Geoclue
from datetime import datetime
print("Geoclue version %s" % Geoclue.VERSION)
dl = Geoclue.DiscoverLocation()
dl.init()
providers = dl.get_available_providers()
for provider in providers:
pname = provider['name']
dl.set_position_provider(pname)
position = dl.get_location_info()
print("\n%s\n%s" % (pname, "-"*len(pname)))
for k, v in position.items():
if k.endswith('_timestamp'):
v = datetime.fromtimestamp(v)
print("%-25s%s" % (k+':',v))
Existe uma solução alternativa que utiliza o seu IP e localiza a sua localização com base no seu IP Real.
primeiro instale o lnyx
sudo apt-get install lynx-cur
Agora o comando é:
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\'
Tags command-line