Гид по технологиям

Геолокация удалённого Linux‑сервера через публичные API

• 5 min read • Инфраструктура • Обновлено 24 Nov 2025
Геолокация удалённого Linux‑сервера через API
Геолокация удалённого Linux‑сервера через API

Фоновое изображение: диаграмма геолокации сервера

Быстрые ссылки

  • Подключение к удалённой системе
  • Установка curl и jq
  • Как узнать публичный IP сервера
  • Получение данных геолокации через API
  • Автоматизация вызова API скриптом
  • Обновление данных раз в сутки через cron

Что делает этот метод

Каждый сервер в интернете имеет публичный IP‑адрес. По этому IP можно получить приближённую информацию о местоположении — город, регион и страну — через открытые сервисы геолокации. Это не даёт точных GPS‑координат владельца, но показывает, в каком регионе расположен узел. Такой подход полезен для визуализации серверных «горячих точек», аудита распределения инфраструктуры и простого мониторинга местоположения.

Короткое определение: IP‑геолокация — это определение приблизительного физического региона по публичному IP‑адресу.

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

Вы будете запускать команды на целевом Linux‑сервере или другой удалённой системе. Подключитесь к серверу и получите shell. Обычно используют SSH:

ssh user@server.example.com

Если вы запускаете команды локально, это тоже работает — просто вы уже знаете своё местоположение.

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

Нужно два инструмента: curl для HTTP‑запросов и jq для разбора JSON. На Ubuntu/Debian используйте apt:

sudo apt-get update
sudo apt-get install -y curl jq

Для других дистрибутивов применяйте пакетный менеджер вашей системы (yum, dnf, pacman и т.д.).

Как узнать публичный IP сервера

Запросите публичный IP через простой вызов:

curl https://ipinfo.io/ip

Этот вызов вернёт строку с IP‑адресом, например 203.0.113.45.

Получение данных геолокации через API

Дальше мы используем API ipvigilante.com (в примере). Подставьте ваш IP:

curl https://ipvigilante.com/

Вывод команды curl с IP-адресом

Ответ API возвращает JSON с полями, среди которых есть city_name, country_name, latitude и longitude. Пример вывода (фрагмент):

JSON-метаданные с информацией о местоположении (город, широта, долгота)

Мы будем извлекать поля: latitude, longitude, city_name и country_name и сохранять их в CSV‑строке.

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

Создадим скрипт, который определяет публичный IP, вызывает API и записывает результат в файл /tmp/server_location.txt в формате CSV: latitude,longitude,city,country.

Откройте редактор и создайте файл geolocate.sh со следующим содержимым:

#!/bin/sh

# Файл для вывода (CSV)
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' | \
  while read -r LATITUDE; do
    read -r LONGITUDE
    read -r CITY
    read -r COUNTRY
    # Собираем CSV‑строку и удаляем кавычки
    echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | tr -d '"' > ${OUTPUT_FILE}
  done

Комментарии в скрипте переведены для удобства; сами команды остаются работоспособными. Скрипт перезаписывает файл OUTPUT_FILE каждый запуск.

Сделайте скрипт исполняемым:

chmod u+x geolocate.sh

Запустите и проверьте результат:

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

Запуск скрипта geolocate.sh и содержимое файла вывода

Обновление данных раз в сутки через cron

Чтобы обновлять данные автоматически каждый день, можно поместить скрипт в /etc/cron.daily. Скопируйте его с правами root:

sudo cp geolocate.sh /etc/cron.daily

После копирования cron запустит скрипт в соответствии с системой cron.daily (обычно раз в сутки). Альтернативно, можно добавить явную запись в crontab для большей точности времени:

# Редактировать crontab для root или нужного пользователя
sudo crontab -e

# Например, запуск каждый день в 03:15
15 3 * * * /path/to/geolocate.sh

Критерии приёмки

  • Скрипт выполняется без ошибок.
  • После запуска файл /tmp/server_location.txt содержит 4 поля: latitude,longitude,city,country.
  • Автоматический запуск по cron фактически обновляет файл в заданное время.

Когда метод не сработает (ограничения)

  • NAT или прокси: если сервер находится за NAT и публичный IP принадлежит маршрутизатору, геолокация будет относиться к выходному IP, не к конкретной машине.
  • CDN, балансировщики нагрузки и облачные провайдеры: IP часто указывает на расположение провайдера, а не на физическую стоянку конкретного сервера.
  • VPN или туннели: геолокация покажет местоположение VPN‑точки выхода.
  • Точность: сервисы дают округлённые координаты — обычно город/регион, но не точный адрес.

Альтернативные подходы и сервисы

  • ipinfo.io — расширенное API с платными уровнями и дополнительными полями.
  • ipapi.co / ipapi.com — удобный формат ответа и дополнительные данные (ASN, платёжные опции).
  • freegeoip.app / ipstack.com — другие варианты, у каждого свои лимиты и условия использования.

Выбор сервиса зависит от точности, SLA и допустимого объёма запросов. Для массовых запросов лучше выбрать платный план с гарантией доступности.

Практические рекомендации и чек‑лист по ролям

Администратор:

  • Проверить доступность curl/jq на всех целевых системах.
  • Настроить безопасный путь хранения скрипта (/usr/local/bin или /opt/scripts).

DevOps/Инженер CI/CD:

  • Включить мониторинг успешных запусков (логирование, alert при ошибке).
  • Версионировать скрипт и тестировать на тестовой среде.

Security/Compliance:

  • Убедиться, что автоматические вызовы API не отправляют чувствительные данные.
  • Разрешить исходящие HTTP(S) только на список доверенных IP/доменов при необходимости.

Оператор (оперативные задачи):

  • Проверять /tmp/server_location.txt после обновлений.
  • Вести список используемых API и лимитов запросов.

Мини‑методология: как внедрять по этапам

  1. Тест: запустите скрипт локально, проверьте корректность CSV.
  2. Интеграция: разместите скрипт в контроле версий и настройте deployment.
  3. Автоматизация: добавьте в cron и настроьте логи/уведомления.
  4. Мониторинг: привяжите метрики успеха к существующим системам мониторинга.

Заметки по безопасности и приватности

  • IP‑геолокация может считаться обработкой персональных данных в ряде юрисдикций, если по IP можно идентифицировать физическое лицо. Проконсультируйтесь с командой комплаенса при работе с клиентскими данными.
  • Для GDPR: документируйте цели обработки, правовую основу (например, законный интерес или согласие) и срок хранения данных. Минимизируйте хранение и удаляйте старые записи.
  • Старайтесь шифровать транспорт (используйте HTTPS) и ограничивать доступ к файлам с выводом.

Контроль ошибок и тесты приёмки

Тест‑кейсы:

  • Скрипт с корректным публичным IP возвращает 4 поля CSV.
  • При отсутствии сети скрипт не создаёт пустой файл, а логирует ошибку (можно расширить скрипт для логирования).
  • Cron действительно запускает скрипт в указанное время (проверка по времени изменения файла).

Критерии приёмки: успешный запуск, корректный формат, документированное поведение при ошибках.

Шпаргалка / Cheat sheet

  • Установить инструменты: sudo apt-get install -y curl jq
  • Получить IP: curl https://ipinfo.io/ip
  • Получить JSON‑данные: curl https://ipvigilante.com/
  • Сохранить скрипт в /usr/local/bin и дать право выполнения: sudo cp geolocate.sh /usr/local/bin && sudo chmod 755 /usr/local/bin/geolocate.sh
  • Пример crontab (ежедневно 03:15): 15 3 * /usr/local/bin/geolocate.sh

Факт‑бокс (ключевые факты)

  • Точность: обычно до уровня города/региона, не до конкретного адреса.
  • Частота обновления: вы контролируете (cron, systemd timer или одноразовый запуск).
  • Источник: открытые API с ограничениями по количеству запросов.

Итог

IP‑геолокация — простой и быстрый инструмент для понимания примерного расположения серверов. Он не заменяет физическую инвентаризацию, но помогает визуализировать распределение инфраструктуры и обнаруживать неожиданные географические концентрации. Обратите внимание на ограничения точности, возможный эффект NAT/облачных провайдеров и требования по приватности при хранении данных.

Короткие рекомендации: начните с тестового скрипта, выберите подходящий API по лимитам и политике конфиденциальности, затем автоматизируйте через cron и подключите мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро