За да получите информация за географското местоположение за конкретен IP адрес, трябва да използвате някаква онлайн услуга, която предоставя подходящия API. Добра идея е да използвате някаква публична услуга, за да избегнете процедурата за оторизация и управлението на API ключове. Една такава услуга е FreeGeoIP.net.
Той предоставя публичен HTTP API за търсене на геолокация на IP адреси. Той използва база данни от IP адреси, които са свързани с градове, заедно с друга подходяща информация като часова зона, географска ширина и дължина. Това е много полезно.
Услугата може да предоставя резултати от търсене като JSON или XML. Така че, ако комбинираме curl с някакъв JSON анализатор, можем да получим необходимата информация.
Ще използвам любимия си анализатор на JSON, jq:
Той е много лек и бърз.
За нашия случай заявката трябва да бъде както следва:
|_+_|Частта „json“ тук е желаният формат на данните. Освен JSON, той може да бъде XML или CSV.
Нека изпълним заявката с curl и да видим резултата:
Резултатът е необработен JSON изход, който е труден за четене. За да подобрим външния вид на набора от резултати, нека използваме инструмента jq. Комбинирайте го с къдрици, както следва:
|_+_|Резултатът ще бъде по-лесен за четене:
Използвайки jq, можете да филтрирате изхода и да го накарате да показва само задължителните полета. Следната команда ще покаже само името на държавата, географската ширина и дължина:
|_+_|Можете да запишете тази команда като следния shell скрипт:
|_+_|Следващият път, когато трябва да получите информация за геолокация, можете да изпълните скрипта си по следния начин:
|_+_|Това е.