Иногда вам может понадобиться определить географическое местоположение удаленной Linux-системы, используя ее IP-адрес. В этой статье мы узнаем, как это сделать с помощью простых сценариев оболочки и API. Каждый сервер имеет IP-адрес, назначаемый непосредственно сетью, частью которой он является. Вы можете использовать два полезных API curlmyip.ru и ipapi.co, которые позволяют легко узнать город и страну удаленного Linux-сервера.
Как проверить местоположение сервера Linux
Ниже описаны шаги для получения местоположения сервера Linux по IP-адресу.
1. Установите cURL и jq
Сначала нам нужно установить инструменты cURL и jq. cURL используется для загрузки информации о местоположении из API, а инструмент jq используется для преобразования данных JSON, полученных от этих API, в удобный для использования формат. Итак, откройте терминал и выполните следующие команды, в зависимости от вашей системы.
1 | sudo apt install curl jq |
1 | sudo yum install curl jq |
Fedora 22+
1 | sudo dnf install curl jq |
openSUSE
1 | sudo zypper install curl jq |
2. Найдите IP-адрес сервера
Этот шаг необязателен. Если вы уже знаете IP-адрес вашего удаленного Linux-сервера, вы можете перейти к следующему шагу. В противном случае вам может понадобиться выполнить следующую команду из удаленного сервера (не клиента), чтобы найти публичный IP-адрес удаленного сервера.
1 | curl https://curlmyip.ru |
В качестве альтернативы, вы можете ввести в Google 'what is my IP' с удаленного сервера (не клиента). С какой бы системы вы ни запускали эти команды, они покажут вам IP-адрес этой системы.
3. Получение данных о местоположении IP-адреса
Получив публичный IP-адрес удаленного сервера, вы можете использовать curl для выполнения запроса к API ipvigilante, чтобы получить информацию о местоположении IP-адреса. Замените <ваш ip-адрес> на публичный IP-адрес вашего удаленного сервера.
1 | curl https://ipapi.co/[ваш ip-адрес]/json/ |
Вот пример вывода в формате JSON.
4. Автоматизация проверки геолокации
Мы создадим shell-скрипт для автоматического получения публичного IP удаленного сервера и проверки его местоположения. Создайте новый файл с помощью текстового редактора.
1 | nano get-geo.sh |
Добавьте в него следующую строку.
1 | curl -s https://ipapi.co/$(curl -s https://curlmyip.ru)/json/ | jq '.latitude, .longitude, .city, .country_name' |
Сохраните и закройте файл. В приведенном выше коде мы используем команду curl для выполнения запроса к ipvigilante.com. Вместо того чтобы предоставлять IP-адрес удаленного сервера, мы используем другой запрос curl к ipinfo.io, чтобы получить IP-адрес удаленного сервера. Мы передаем JSON-вывод первой команды curl в утилиту jq и получаем широту, долготу, имя_города, имя_страны.
1 | chmod +x get-geo.sh |
Вы можете запустить сценарий оболочки с удаленного сервера с помощью следующей команды.
1 | ./get-geo.sh |
Если вы хотите получить другую информацию от ipvigilante, вы можете изменить переменные, используемые в команде jq.
Заключение
В этой статье мы узнали, как найти местоположение сервера Linux. Это очень полезно в случае, если вам нужно найти географическое местоположение удаленного Linux-сервера. Если вы знаете публичный IP-адрес удаленного сервера, вы можете легко отправить запрос на ipapi.co и получить необходимые данные.