Bazen bir IP adresi için coğrafi konum bilgilerini hızlı bir şekilde almanız gerekir. Linux'ta, zamandan tasarruf etmek ve bu bilgileri hızlı bir şekilde almak için konsol uygulamalarının gücünü kullanabilirsiniz. Nasıl yapılacağını görelim.
Reklam
Belirli bir IP adresi hakkında coğrafi konum bilgilerini elde etmek için, uygun API'yi sağlayan bazı çevrimiçi hizmetleri kullanmanız gerekir. Yetkilendirme prosedüründen ve API anahtarı yönetiminden kaçınmak için bazı kamu hizmetlerini kullanmak iyi bir fikirdir. Böyle bir hizmet FreeGeoIP.net.
IP adreslerinin coğrafi konumunu aramak için genel bir HTTP API sağlar. Zaman dilimi, enlem ve boylam gibi diğer ilgili bilgilerle birlikte şehirlerle ilişkili bir IP adresleri veritabanı kullanır. Bu çok kullanışlıdır.
Hizmet, arama sonuçlarını JSON veya XML olarak sağlayabilir. Yani, curl'yi bir JSON ayrıştırıcıyla birleştirirsek, gerekli bilgiyi elde edebiliriz.
google slaytlara yazı tipi nasıl eklenir
En sevdiğim JSON ayrıştırıcısını kullanacağım, jq:
Çok hafif ve hızlıdır.
Bizim durumumuz için sorgu aşağıdaki gibi olmalıdır:
http://freegeoip.net/json/119.94.116.145
Buradaki 'json' kısmı istenen veri formatıdır. JSON'un yanı sıra XML veya CSV olabilir.
Sorguyu curl ile çalıştıralım ve çıktıyı görelim:
Sonuç, okunması zor olan ham JSON çıktısıdır. Sonuç kümesinin görünümünü iyileştirmek için jq aracını kullanalım. Curl ile şu şekilde birleştirin:
curl http://freegeoip.net/json/119.94.116.145|jq
Çıktının okunması daha kolay olacaktır:
Jq kullanarak, çıktıya filtre uygulayabilir ve yalnızca gerekli alanları göstermesini sağlayabilirsiniz. Aşağıdaki komut yalnızca ülke adını, enlemi ve boylamı gösterecektir:
curl http://freegeoip.net/json/119.94.116.145|jq -r '.country_name, .latitude, .longitude'
Bu komutu aşağıdaki kabuk betiği olarak kaydedebilirsiniz:
#! / bin / sh curl -s http://freegeoip.net/json/|jq -r '.country_name, .latitude, .longitude'
Bir dahaki sefere coğrafi konum bilgisini almanız gerektiğinde, komut dosyanızı şu şekilde çalıştırabilirsiniz:
./geo.sh IP_adresi
Bu kadar.