LinuxКак сделать

Как узнать географическое местоположение вашей системы из сценария Bash

Карта мира с концепцией интернет-соединений
Toria / Shutterstock.com

Вы можете найти географическое местоположение удаленной системы Linux, используя открытые API и простой скрипт bash. Геолокация сервера может помочь вам отследить его в физическом мире, гарантируя, что серверы расположены в региональных точках доступа.

Каждый сервер в Интернете имеет общедоступный IP-адрес . Это либо напрямую назначается серверу, либо назначается маршрутизатору, который отправляет трафик на этот сервер. IP-адреса дают нам представление о том, где находится этот сервер в мире. Мы можем получить эти данные геолокации через два открытых API, предоставленных ipinfo.co и IP Vigilante, и использовать их для просмотра города, штата и страны, связанных с сервером или другой удаленной системой. Это не дает вам точное местоположение GPS; он просто позволяет увидеть общую область IP-адреса.

Подключиться к удаленной системе

Вы будете выполнять следующие команды на сервере Linux или в других удаленных системах, которые вы хотите геолокации, поэтому вы должны подключиться к серверу и сначала получить доступ к оболочке на нем. Например, вы можете подключиться через SSH . Вы можете запустить команды в своей локальной системе, чтобы найти ее местоположение, но вы, вероятно, уже знаете, где находитесь!

Установите curl и jq

Нам нужны два инструмента для доступа к API геолокации: curl для выполнения HTTP-запросов и jq для обработки данных JSON, которые мы получаем. Откройте терминал и используйте apt-get для установки этих инструментов в системах на основе Ubuntu или Debian. В других дистрибутивах Linux используйте инструмент установки пакетов вашего дистрибутива Linux.

  sudo apt-get установить curl jq 

Найти публичный IP-адрес сервера

Нам также нужен общедоступный IP-адрес сервера, прежде чем мы сможем получить данные геолокации. Используйте curl для вызова API-интерфейса ipinfo.io в окне терминала.

  curl https://ipinfo.io/ip 

Получить данные о местоположении из API

Теперь, когда у нас есть общедоступный IP-адрес сервера, мы можем обратиться к API ipvigilante.com, чтобы получить данные геолокации. Замените <your ip address> адресом, который вернулся в предыдущей команде.

  curl https://ipvigilante.com/< ваш IP-адрес> 

вывод команды curl

Давайте внимательнее посмотрим, какие данные мы получим от этого вызова:

метаданные, показывающие информацию о местоположении

API возвращает город, страну и континент, в котором находится наш сервер. Он также возвращает приблизительные значения широты и долготы, если мы хотим нарисовать этот сервер на интерактивной карте. Мы будем использовать «широту», «долготу», «название города» и «название страны» в нашем сценарии. Команда jq понимает, как обрабатывать данные API и извлекать эти четыре поля.

Создание скрипта для автоматизации вызова API

Мы можем создать скрипт, который захватывает данные геолокации и записывает их в файл в формате CSV. Данные будут записаны в файл с именем server_location.txt в server_location.txt /tmp/ . Откройте ваш любимый редактор и создайте скрипт с именем geolocate.sh . Вставьте содержимое скрипта, показанное ниже, и обязательно замените IP-адрес своим:

  #! / Bin / ш

 Output_file = / TMP / server_location.txt

 # Захватите публичный IP-адрес этого сервера
 PUBLIC_IP = `curl -s https: // ipinfo.io / ip`

 # Вызвать API геолокации и захватить вывод
 curl -s https://ipvigilante.com/$‹PUBLIC_IP} |  \
         jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' |  \
         пока читаешь -r ЛАТИТУДА;  делать
                 прочитайте -r ДОЛГОЛЕТИЕ
                 читать -r ГОРОД
                 читать -r СТРАНА
                 echo "$ {LATITUDE}, $ {LONGITUDE}, $ {CITY}, $ {COUNTRY}" |  \
                         tr --delete \ "> \
                         $ {Output_file}
         сделано

Сохраните скрипт и вернитесь в терминал. Сделайте скрипт исполняемым из терминала, предоставив разрешение на выполнение этого файла.

  chmod u + x geolocate.sh 

Теперь вы готовы проверить это. Запустите скрипт geolocate.sh и проверьте содержимое выходного файла:

  ./geolocate.sh
 cat /tmp/server_location.txt

запуск сценария геолокации

Обновление данных геолокации один раз в день с помощью задания Cron

Давайте создадим задание cron, чтобы наш сервер обновлял свою геолокацию и сохранял ее в файл один раз в день. Ежедневное задание cron обновляет файл server_location.txt в папке /tmp/ сервера. Создать 24-часовую работу cron так же просто, как поместить наш скрипт в каталог /etc/cron.daily . Мы должны использовать команду sudo для копирования файла от имени пользователя root, чтобы избежать проблем с разрешениями. Выполните следующую команду, чтобы скопировать geolocate.sh в каталог /etc/cron.daily .

  sudo cp geolocate.sh /etc/cron.daily 

Эти изменения являются немедленными, и наш скрипт будет запускаться каждые 24 часа для обновления содержимого файла /tmp/server_location.txt . Мы можем использовать эти данные, чтобы делать интересные вещи, такие как построение наших серверов на карте, а также объединение геолокации с журналами трафика, чтобы увидеть, где в мире находятся наши точки доступа к серверам.

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone