Получить информацию о геолокации 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 '.country_name, .latitude, .longitude'
Вы можете сохранить эту команду как следующий сценарий оболочки:
#! / bin / sh. завиток -s http://freegeoip.net/json/$1|jq -r '.country_name, .latitude, .longitude'
В следующий раз, когда вам понадобится информация о геолокации, вы можете выполнить свой скрипт следующим образом:
./geo.sh IP_address
Вот и все.