Бывают случаи, когда необходимо определить географическое местоположение удаленной машины Ubuntu на основе ее IP-адреса. В этой статье мы расскажем, как это сделать, сначала получив IP-адрес публичного сервера системы, а затем используя этот IP-адрес для определения географического положения, используя API, предоставляемые ipinfo.io и ipvigilante.com.
Показать географическое местоположение IP-адреса в терминале
Для того чтобы получить географическое местоположение вашего сервера, вам понадобится загрузчик Curl и инструмент командной строки JQ. Эти инструменты позволят вам получить и обработать необходимые данные из геолокационных API из Интернета. Пожалуйста, выполните следующие шаги, чтобы установить эти инструменты и затем получить необходимую информацию о местоположении, используя публичный IP вашей машины.
Шаг 1: Установите пакеты Curl и jq
Curl и jq легко доступны в официальном репозитории Ubuntu и могут быть установлены из командной строки с помощью команды apt-get.
Откройте приложение Terminal либо через системный Поиск приложений, либо через сочетание клавиш Ctrl+Alt+T.
Следующим шагом будет обновление индекса репозитория вашей системы с помощью следующей команды:
1 | sudo apt-get update |
Это поможет вам установить последнюю доступную версию программного обеспечения из Интернета.
Обратите внимание, что только авторизованный пользователь может добавлять, удалять и настраивать программное обеспечение на Ubuntu.
Теперь вы готовы к установке необходимых инструментов; вы можете сделать это, выполнив следующую команду от имени sudo:
1 | sudo apt-get install curl jq |
Система может запросить у вас пароль для sudo, а также предложить вам опцию Y/n для продолжения установки. Введите Y и нажмите Enter; программное обеспечение будет установлено на вашу систему. Однако процесс может занять некоторое время в зависимости от скорости вашего Интернета.
Шаг 2: Найдите публичный IP-адрес машины/сервера Ubuntu
Все серверы в Интернете распознаются по публичным IP-адресам. Это IP-адрес, присвоенный вашему серверу напрямую или через маршрутизатор сетевого трафика. Мы можем получить этот IP вашей машины с помощью API, предоставляемого ipinfo.io.
Используйте следующую команду curl, чтобы получить ваш публичный IP:
1 | curl https://ipinfo.io/ip |
либо
1 | curl https://curlmyip.ru |
Вывод, размытый здесь из-за соображений конфиденциальности, - это публичный IP, по которому ваш сервер распознается в мире Интернета.
Шаг 3: Получение геолокации на основе публичного IP
Как только вы узнали свой публичный IP, вы можете сделать запрос к API ipvigilante.com, чтобы получить географическое положение ваших серверов. Используйте команду curl, упомянутую ниже, чтобы получить данные о вашем местоположении, такие как:
- Континент
- Страна
- Штат/провинция
- Город
- широта и долгота
1 | curl https://ipvigilante.com/<public-IP> |
Полученная информация довольно подробна и хорошо служит цели.
Использование сценария Bash для вывода геопозиции
Вместо того чтобы выполнять описанные выше действия каждый раз, когда вам нужно проверить географическое положение, вы можете воспользоваться bash-скриптом, который мы опишем здесь. С помощью этого сценария bash вы можете автоматизировать свою систему для получения географических данных вашего сервера с помощью одной команды, которая запускает этот сценарий. Вот как вы можете это сделать:
Откройте новый файл скрипта в одном из ваших любимых текстовых редакторов. Мы будем использовать редактор nano, чтобы открыть пустой файл скрипта с именем geo_location.sh
1 | nano geo_location.sh |
В этот пустой файл добавьте следующий скрипт.
1 | curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' |
Вместо того чтобы вводить весь сценарий в свой файл bash, вы можете скопировать его отсюда и вставить в Терминал с помощью сочетания клавиш Ctrl+Shift+V или с помощью опции Paste из меню правой кнопки мыши.
Теперь выйдите из файла через сочетание клавиш Ctrl+X и сохраните файл на запрос "Сохранить измененный буфер?", набрав Y и нажав Enter.
Для того чтобы сделать этот файл исполняемым скриптом, выполните следующую команду в Терминале:
1 | chmod +x geo_location.sh |
Наконец, запустите этот скрипт следующим образом:
1 | ./geo_location.sh |
Вы можете видеть, как этот сценарий аккуратно выводит в терминал широту, долготу, город и название страны вашего сервера.
Если вам нужно получить геолокацию вашего сервера только один раз, вам не нужно создавать bash-скрипт. В противном случае скрипт будет автоматизировать весь процесс каждый раз, когда вам нужно будет проверить графическое местоположение вашей машины Ubuntu на основе ее публичного IP.