Кажется, что существует названный пакет geoclue
который использует службу определения местоположения Mozilla для точек беспроводного доступа поиска и их известного местоположения, но там, кажется, не интерфейс командной строки для этого. Там другой путь состоит в том, чтобы сделать это? Какие-либо умные взломы?
Если Вы хотите основанный на IP поиск... (но необходимо будет зафиксировать форматирование HTML вывода)
wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php
Для получения местоположения IP, можно использовать:
curl -s http://whatismycountry.com/ | sed -n 's|.*> *\(.*\)</h3>|\1|p'
Для получения координат IP можно использовать:
curl -s http://whatismycountry.com/ | sed -n 's/.*Coordinates \(.*\)<.*/\1/p'
Вот мой собственный лучший ответ, который испытывает всех различных поставщиков геоподсказки, доступных в 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
Это приводит к:
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 полностью отбрасывает это. Кажется, что должен быть поставщик, который только использует точки доступа Wi-Fi, но я еще не нашел его.
Вот сценарий Python 2.x, подобный тому, отправленному @Mike McKay, который будет использовать всех доступных поставщиков Геоподсказки и производить их информацию о местоположении в довольно распечатанном формате (требует 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))
Существует обходное решение, которые используют Ваш 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\\'