احصل على معلومات تحديد الموقع الجغرافي لعنوان IP في Bash في Linux
تحتاج أحيانًا إلى الحصول على معلومات تحديد الموقع الجغرافي لعنوان IP بسرعة. في Linux ، يمكنك استخدام قوة تطبيقات وحدة التحكم لتوفير وقتك واسترداد هذه المعلومات بسرعة. دعونا نرى كيف يمكن القيام بذلك.
الإعلانات
للحصول على معلومات الموقع الجغرافي حول عنوان IP محدد ، تحتاج إلى استخدام بعض الخدمات عبر الإنترنت التي توفر واجهة برمجة التطبيقات المناسبة. إنها لفكرة جيدة استخدام بعض الخدمات العامة لتجنب إجراء التفويض وإدارة مفتاح واجهة برمجة التطبيقات. إحدى هذه الخدمات هي FreeGeoIP.net.
يوفر واجهة برمجة تطبيقات HTTP عامة للبحث في تحديد الموقع الجغرافي لعناوين 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"
يمكنك حفظ هذا الأمر كبرنامج shell النصي التالي:
#! / بن / ش. حليقة- s http://freegeoip.net/json/$1|jq -r ".country_name ، .latitude ، .longitude"
في المرة التالية التي تحتاج فيها إلى الحصول على معلومات تحديد الموقع الجغرافي ، يمكنك تنفيذ البرنامج النصي الخاص بك كما يلي:
./geo.sh IP_address
هذا كل شيء.