Домашня » як » Як отримати географічне розташування системи з сценарію Bash

    Як отримати географічне розташування системи з сценарію Bash

    Toria / Shutterstock.com

    Ви можете знайти географічне розташування віддаленої системи Linux, використовуючи відкриті API і простий скрипт bash. Geolocating сервер може допомогти вам відстежувати його у фізичному світі, забезпечуючи сервери розташовані в регіональних гарячих точках.

    Кожен сервер в Інтернеті має загальнодоступну IP-адресу. Це або безпосередньо призначено серверу, або присвоєно маршрутизатору, який посилає трафік на цей сервер. IP-адреси дають нам підказку про те, де знаходиться цей сервер у світі. Ми можемо отримати дані геолокації за допомогою двох відкритих API, наданих ipinfo.co і IP Vigilante, і використовувати їх для перегляду міста, штату і країни, пов'язаної з сервером або іншою віддаленою системою. Це не дає точного місцезнаходження GPS; це просто дозволяє побачити загальну область IP-адреси.

    Підключення до віддаленої системи

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

    Встановіть завиток і jq

    Нам потрібні два інструменти для доступу до API геолокації: завивати для запитів HTTP і  jq обробляти дані JSON, які ми отримуємо назад. Відкрийте термінал і використовуйте  apt-get встановити ці інструменти на системах на базі 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 повертає місто, країну та континент, в якому знаходиться наш сервер. Він також повертає приблизні координати широти і довготи, якщо ми хочемо намалювати цей сервер на інтерактивній карті. У нашому сценарії ми будемо використовувати "широта", "довгота", "ім'я міста" і "ім'я країни". The  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 геолокації та захоплення вихідних завивок : //ipvigilante.com/$ PUBLIC_IP | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | при читанні -r LATITUDE; do read -r LONGITUDE читання -r CITY читання -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | R --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 файл. Ми можемо використовувати ці дані, щоб зробити цікаві речі, такі як побудова нашого сервера на карті, а також поєднання геолокації з журналами трафіку, щоб побачити, де в світі є наші гарячі точки сервера..