Отримайте інформацію про геолокацію IP-адреси в Bash в Linux
Іноді вам потрібно швидко отримати інформацію про геолокацію для IP-адреси. У Linux ви можете використовувати потужність консольних програм, щоб заощадити свій час і швидко отримати цю інформацію. Давайте подивимося, як це можна зробити.
Реклама
Щоб отримати інформацію про географічне розташування певної IP-адреси, вам потрібно використовувати онлайн-сервіс, який надає відповідний API. Щоб уникнути процедури авторизації та керування ключами API, доцільно використовувати деякі загальнодоступні служби. Однією з таких послуг є FreeGeoIP.net.
Він надає публічний HTTP API для пошуку геолокації IP-адрес. Він використовує базу даних IP-адрес, які пов’язані з містами, а також іншу відповідну інформацію, як-от часовий пояс, широту та довготу. Це дуже корисно.
Служба може надавати результати пошуку як JSON або XML. Отже, якщо ми об’єднаємо curl з деяким парсером JSON, ми зможемо отримати необхідну інформацію.
Я буду використовувати свій улюблений парсер JSON, jq:
Він дуже легкий і швидкий.
У нашому випадку запит має бути таким:
http://freegeoip.net/json/119.94.116.145
Частина "json" тут є бажаним форматом даних. Крім JSON, це може бути XML або CSV.
Давайте запустимо запит за допомогою curl і подивимося на результат:
Результатом є вихідний вихідний файл JSON, який важко читати. Щоб покращити вигляд набору результатів, скористаємося інструментом jq. Комбінуйте його з завитком наступним чином:
завивати http://freegeoip.net/json/119.94.116.145|jq
Результат буде легше читати:
Використовуючи jq, ви можете відфільтрувати вихідні дані та показати лише необхідні поля. Наступна команда відображатиме лише назву країни, широту та довготу:
завивати http://freegeoip.net/json/119.94.116.145|jq -r '.назва_країни,.широта,.довгота'
Ви можете зберегти цю команду як такий сценарій оболонки:
#!/bin/sh. завивати -с http://freegeoip.net/json/$1|jq -r '.назва_країни,.широта,.довгота'
Наступного разу, коли вам знадобиться отримати інформацію про геолокацію, ви можете виконати свій сценарій так:
./geo.sh IP_адреса
Це воно.