Как я могу получить свое текущее местоположение/координаты IP из командной строки?

Кажется, что существует названный пакет geoclue который использует службу определения местоположения Mozilla для точек беспроводного доступа поиска и их известного местоположения, но там, кажется, не интерфейс командной строки для этого. Там другой путь состоит в том, чтобы сделать это? Какие-либо умные взломы?

3
задан 25 March 2014 в 11:18

5 ответов

Если Вы хотите основанный на IP поиск... (но необходимо будет зафиксировать форматирование HTML вывода)

wget http://cqcounter.com/whois/my_ip_address.php && egrep "IP Location|City|Latitude|Longitude" my_ip_address.php
4
ответ дан 17 November 2019 в 20:00

Для получения местоположения IP, можно использовать:

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

Для получения координат IP можно использовать:

curl -s http://whatismycountry.com/ | sed -n 's/.*Coordinates \(.*\)<.*/\1/p'
1
ответ дан 17 November 2019 в 20:00

Вот мой собственный лучший ответ, который испытывает всех различных поставщиков геоподсказки, доступных в 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, но я еще не нашел его.

1
ответ дан 17 November 2019 в 20:00

Вот сценарий 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))
0
ответ дан 17 November 2019 в 20:00

Существует обходное решение, которые используют Ваш 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\\'
-1
ответ дан 17 November 2019 в 20:00

Другие вопросы по тегам:

Похожие вопросы: