Вземете информация за геолокация на 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 и ще видим изхода:
къдрица http://freegeoip.net/json/119.94.116.145|jq
Резултатът ще бъде по-лесен за четене:
Използвайки jq, можете да филтрирате изхода и да го накарате да показва само задължителните полета. Следната команда ще покаже само името на държавата, географската ширина и дължина:
къдрица http://freegeoip.net/json/119.94.116.145|jq -r '.име_на_страна,.ширина,.дължина'
#!/bin/sh. къдрица -s http://freegeoip.net/json/$1|jq -r '.име_на_страна,.ширина,.дължина'
Следващият път, когато трябва да получите информация за геолокация, можете да изпълните своя скрипт по следния начин:
./geo.sh IP_адрес
Това е.