Як отримати географічне розташування системи з сценарію Bash
Ви можете знайти географічне розташування віддаленої системи 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
файл. Ми можемо використовувати ці дані, щоб зробити цікаві речі, такі як побудова нашого сервера на карті, а також поєднання геолокації з журналами трафіку, щоб побачити, де в світі є наші гарячі точки сервера..