الأخبار التكنولوجية والاستعراضات والنصائح!

كيفية الحصول على الموقع الجغرافي لنظامك من برنامج Bash النصي

يمكنك العثور على الموقع الجغرافي لنظام Linux عن بُعد باستخدام واجهات برمجة تطبيقات مفتوحة وبرنامج نصي بسيط bash. يمكن أن يساعدك تحديد الموقع الجغرافي للخادم على تتبعه في العالم المادي ، مما يضمن وجود الخوادم في النقاط الفعالة الإقليمية.

كل خادم على الإنترنت له عنوان IP عام. يتم تعيين هذا إما مباشرة إلى الخادم أو إلى جهاز توجيه يرسل حركة المرور إلى ذلك الخادم. تعطينا عناوين IP فكرة عن مكان وجود هذا الخادم في العالم. يمكننا الحصول على بيانات تحديد الموقع الجغرافي هذه من خلال اثنين من واجهات برمجة التطبيقات المفتوحة ، التي توفرها ipinfo.co و IP Vigilante واستخدامها لمعرفة المدينة والولاية والبلد المرتبطة بخادم أو نظام آخر بعيد. هذا لا يعطيك موقع GPS دقيق ؛ يسمح لك فقط بمشاهدة النطاق العام لعنوان IP.

قم بالاتصال بنظام بعيد

ستقوم بتشغيل الأوامر التالية على خادم Linux أو أي نظام بعيد آخر تريد تحديده جغرافيًا ، لذلك ستحتاج إلى الاتصال بالخادم والوصول إلى shell عليه أولاً. على سبيل المثال ، يمكنك الاتصال عبر SSH. يمكنك تشغيل الأوامر على نظامك المحلي للعثور على موقعه ، ولكن من المحتمل أنك تعرف بالفعل مكانك!

قم بتثبيت curl و jq

نحتاج إلى أداتين للوصول إلى واجهة برمجة تطبيقات تحديد الموقع الجغرافي: curl لعمل طلبات HTTP و jq لمعالجة بيانات JSON التي نحصل عليها. افتح Terminal واستخدم apt-get لتثبيت هذه الأدوات على أنظمة Ubuntu أو Debian. في توزيعات Linux الأخرى ، استخدم أداة تثبيت حزمة توزيع Linux بدلاً من ذلك.

sudo apt-get install curl jq

ابحث عن عنوان IP العام للخادم

نحتاج أيضًا إلى عنوان IP العام للخادم قبل أن نتمكن من الحصول على بيانات تحديد الموقع الجغرافي. استخدم curl لإجراء استدعاء API لـ ipinfo.io في نافذة المحطة الطرفية.

حليقة https://ipinfo.io/ip

الحصول على بيانات الموقع من API

الآن بعد أن أصبح لدينا عنوان IP العام للخادم ، يمكننا الاتصال بواجهة برمجة تطبيقات ipvigilante.com للحصول على بيانات تحديد الموقع الجغرافي. استبدل بالعنوان الذي تم إرجاعه في الأمر السابق.

حليقة https://ipvigilante.com/

دعنا نلقي نظرة فاحصة على البيانات التي نحصل عليها من هذه المكالمة:

كيفية الحصول على الموقع الجغرافي لنظامك من برنامج Bash النصي 1

تقوم واجهة برمجة التطبيقات بإرجاع المدينة والبلد والقارة التي يوجد بها خادمنا. تقوم أيضًا بإرجاع إحداثيات خطوط الطول والعرض التقريبية ، إذا أردنا رسم هذا الخادم على خريطة تفاعلية. سنستخدم “خط العرض” و “خط الطول” و “اسم_المدينة” و “اسم_البلد” في البرنامج النصي الخاص بنا. يتعرف الأمر jq على كيفية معالجة بيانات API ويستخرج هذه الحقول الأربعة.

قم بإنشاء برنامج نصي لأتمتة استدعاء API

يمكننا إنشاء برنامج نصي يلتقط بيانات تحديد الموقع الجغرافي ويكتبها في ملف بتنسيق CSV. ستتم كتابة البيانات في ملف يسمى server_location.txt في الدليل / tmp /. افتح المحرر المفضل لديك وقم بإنشاء برنامج نصي يسمى geolocate.sh. الصق محتوى البرنامج النصي الموضح أدناه ، مع التأكد من استبدال عنوان IP بعنوانك:

#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # احصل على عنوان IP العام لهذا الخادم PUBLIC_IP = `curl -s https: // ipinfo.io / ip` # اتصل بواجهة برمجة تطبيقات تحديد الموقع الجغرافي والتقط الناتج curl -s https : //ipvigilante.com/$ {PUBLIC_IP} | jq ‘.data.latitude ، .data.longitude ، .data.city_name ، .data.country_name’ | أثناء قراءة -r LATITUDE ؛ do read -r LONGITUDE read -r CITY read -r COUNTRY echo “$ {LATITUDE}، $ {LONGITUDE}، $ {CITY}، $ {COUNTRY}” | تم إجراء tr –delete “> $ {OUTPUT_FILE}

احفظ البرنامج النصي وارجع إلى المحطة. اجعل البرنامج النصي قابلاً للتنفيذ من الجهاز بإعطاء إذن التنفيذ لهذا الملف.

chmod u + x geolocate.sh

أنت الآن جاهز لاختباره. قم بتشغيل البرنامج النصي geolocate.sh وتحقق من محتويات ملف الإخراج:

./geolocate.sh cat /tmp/server_location.txt

كيفية الحصول على الموقع الجغرافي لنظامك من برنامج Bash النصي 2

قم بتحديث بيانات تحديد الموقع الجغرافي مرة واحدة يوميًا بوظيفة Cron

دعنا ننشئ وظيفة cron ليقوم خادمنا بتحديث موقعه الجغرافي وحفظه في ملف مرة واحدة يوميًا. تقوم مهمة cron اليومية بتحديث ملف يسمى server_location.txt في المجلد / tmp / على الخادم. يعد إنشاء مهمة cron لمدة 24 ساعة أمرًا بسيطًا مثل وضع البرنامج النصي في الدليل /etc/cron.daily. نحتاج إلى استخدام الأمر sudo لنسخ الملف كمستخدم جذر ، لتجنب مشكلات الأذونات. قم بتشغيل الأمر التالي لنسخ geolocate.sh إلى الدليل /etc/cron.daily.

sudo cp geolocate.sh /etc/cron.daily

هذه التغييرات فورية ويتم تشغيل البرنامج النصي الخاص بنا كل 24 ساعة لتحديث محتويات الملف /tmp/server_location.txt. يمكننا استخدام هذه البيانات للقيام بأشياء مثيرة للاهتمام ، مثل رسم خوادمنا على خريطة والجمع بين تحديد الموقع الجغرافي وسجلات حركة المرور لمعرفة مكان نقاط اتصال الخادم لدينا في العالم.