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

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

    Toria / Shutterstock.com

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

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

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

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

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

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

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

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

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

    curl https://ipinfo.io/ip

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

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

    curl https://ipvigilante.com/

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

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

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

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

    #! / bin / sh 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 LATITUDE; читать -r ДЛИННЫЙ ЧИТАТЬ -r ГОРОД читать -r СТРАНА эхо "$ 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 файл. Мы можем использовать эти данные, чтобы делать интересные вещи, такие как отображение наших серверов на карте, а также совмещение геолокации с журналами трафика, чтобы увидеть, где в мире находятся наши точки доступа к серверам..