الصفحة الرئيسية » howto » كيفية الحصول على الموقع الجغرافي للنظام الخاص بك من البرنامج النصي باش

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

    Toria / Shutterstock.com

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

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

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

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

    تثبيت curl و jq

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

    sudo apt-get install curl jq

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

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

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

    الحصول على بيانات الموقع من واجهة برمجة التطبيقات

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

    curl https://ipvigilante.com/

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

    تعيد واجهة برمجة التطبيقات المدينة والبلد والقارة التي يتواجد فيها الخادم الخاص بنا. كما يُرجع أيضًا إحداثيات خطوط الطول والعرض التقريبية ، في حالة ما إذا كنا نريد رسم هذا الخادم على خريطة تفاعلية. سنستخدم "latitude" و "longitude" و "city_name" و "country_name" في النص البرمجي لدينا. ال  JQ الأمر يفهم كيفية معالجة بيانات API واستخراج هذه الحقول الأربعة.

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

    يمكننا إنشاء برنامج نصي يمسك ببيانات الموقع الجغرافي ويكتبه إلى ملف بتنسيق CSV. ستتم كتابة البيانات إلى ملف يسمى server_location.txt في ال / تمة / دليل. افتح محرر المفضلة لديك وإنشاء برنامج نصي اسمه 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 ؛ تقرأ قراءة -L LONGITUDE للقراءة -r CITY للقراءة -r COUNTRY echo "$ LATITUDE، $ LONGITUDE، $ CITY، $ COUNTRY" | \ tr - حذف \ "> \ $ OUTPUT_FILE انتهى 

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

    chmod u + x geolocate.sh

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

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

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

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

    sudo cp geolocate.sh /etc/cron.daily

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