كيفية الحصول على عنوان IP العام الخاص بك في برنامج Linux Bash Script

نشرت: 2022-11-12
كمبيوتر محمول على خلفية زرقاء يعرض موجه أوامر Linux.
fatmawati achmad zaenuri / Shutterstock.com
يمكنك الحصول على عنوان IP الخارجي الخاص بك من موقع ويب باستخدام الأمر curl مثل "curl -s ifconfig.me". ومع ذلك ، يمكن أن تتغير مواقع الويب. للحصول على إجابة أكثر موثوقية ، استخدم الأمر dig بدلاً من ذلك مثل "dig @ resilver1.opendns.com myip.opendns.com + short" للحصول على عنوان IP الخاص بك من خادم DNS.

ستحتاج إلى عنوان IP الخارجي الخاص بك إذا كنت تريد الاتصال بجهاز الكمبيوتر الخاص بك عن بُعد. من السهل العثور عليه يدويًا ، ولكن إليك كيفية العثور عليه من داخل برنامج Linux النصي.

عناوين IP الداخلية والخارجية

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

كيف تعمل عناوين IP؟
ذات الصلة كيف تعمل عناوين IP؟

يحتوي المودم واسع النطاق على موجه شبكة مضمن فيه يوجه حركة مرور الشبكة حول الشبكة من جهاز إلى جهاز. إنها أيضًا السلطة المحلية التي تخصص عناوين IP للأجهزة عند انضمامها إلى الشبكة. كما أنه يحتفظ بجدول أسماء الشبكات وعناوين IP. يتيح لك هذا إعطاء أسماء ذات معنى لأجهزة الكمبيوتر الموجودة على شبكتك ، لأن التعامل مع الأسماء - بالنسبة إلى البشر - أسهل من التعامل مع قوائم الأرقام.

تحتوي الأجهزة الموجودة على الإنترنت أيضًا على عنوان IP. بعضها له أسماء أيضًا ، مثل مواقع الويب. يبحث مقدمو خدمة اسم المجال عن أسماء نطاقات مواقع الويب ويقومون بتبديلها بعناوين IP تلقائيًا.

يتم منح المودم واسع النطاق الخاص بك عنوان IP الخارجي أو المواجه للإنترنت من قِبل مزود خدمة الإنترنت (ISP). بغض النظر عن عدد الأجهزة التي قد تكون لديك في منزلك والمتصلة بالإنترنت ، فإن حركة المرور المجمعة الخاصة بهم تخرج جميعًا من خلال عنوان IP الفردي هذا.

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

ما لم تدفع مبلغًا إضافيًا قليلاً لمزود خدمة الإنترنت الخاص بك كل شهر مقابل عنوان IP ثابت ، فقد يتغير عنوان IP الخارجي الخاص بك من وقت لآخر. قد تؤدي إعادة تشغيل مودم النطاق العريض إلى حصولك على عنوان IP خارجي مختلف. لذلك إذا كنت بحاجة إلى معرفة عنوان IP الخارجي الخاص بك ، فلا يمكنك التحقق منه مرة واحدة وتخزينه. ستحتاج إلى تحديد ما هو دوريًا.

البحث عن عنوان IP الخارجي الخاص بك

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

هناك طريقتان يمكننا القيام بهما. طريقة واحدة تتضمن مواقع الويب. هناك الكثير من مواقع الويب التي ستظهر لك ما هو عنوان IP الخارجي الخاص بك ، ومجموعة من المعلومات الأخرى أيضًا. يمكنك الوصول إليها في متصفحك ، أو استخدام أداة سطر أوامر مثل curl التي يمكنها إنشاء طلبات HTTPS.

الطريقة الأخرى هي استخدام أمر مخصص مثل dig . يستجوب الأمر dig خوادم DNS لاسترداد المعلومات.

باستخدام المستعرض

بالطبع ، لا يعد استخدام المتصفح طريقة ملائمة للنصوص للحصول على عنوان IP الخارجي الخاص بك. لكن النظر إلى موقع ويب يقدم هذه الخدمة يمكن أن يمنحنا معلومات مفيدة. كنا نوصي باستخدام IP4.me ولكن الموقع لم يتم تحديثه إلى HTTPS. لا يزال يستخدم بروتوكول HTTP الأقدم وغير الآمن. لا يزال الموقع يعمل ، ولكن هناك بدائل أفضل الآن.

يوفر موقع ifconfig.me مجموعة جيدة من المعلومات.

يعرض موقع ifconfig.me عنوان IP خارجيًا

هذا يُبلغ عن عنوان IP الخارجي الخاص بنا باعتباره 178.238.11.140. بالتمرير لأسفل عبر صفحة الويب ، ستجد قائمة بالأوامر التي يمكنك استخدامها لاسترداد المعلومات من الموقع.

يعرض موقع ifconfig.me مجموعة من أوامر cURL

تستخدم الأمثلة التي يقدمونها جميعًا curl لاستجواب الموقع. لذلك دعونا نلقي نظرة على استخدام curl .

باستخدام الضفيرة

على آلات الاختبار الخاصة بنا ، تم تثبيت جهاز curl 37 بالفعل. كنا بحاجة إلى تثبيته على أجهزة كمبيوتر Ubuntu و Manjaro الخاصة بنا.

لتثبيته على Ubuntu اكتب:

 sudo apt تثبيت حليقة 

تثبيت curl على Ubuntu

الأمر في Manjaro هو:

 sudo pacman -S curl 

تثبيت الضفيرة على Manjaro

يمكننا تجربة ذلك باستخدام الأمر الأول المدرج في صفحة الويب ifconfig.me .

 حليقة ifconfig.me 

إحضار عنوان IP خارجي باستخدام الإجراء الافتراضي لموقع ifconfig.me

يتم استرداد عنوان IP الخارجي الخاص بنا وعرضه في نافذة المحطة الطرفية. الإخراج هو عظام عارية. لا يوجد حتى حرف سطر جديد مطبوع بعد السلسلة. يتم توجيه موجه الأوامر مباشرة مقابل عنوان IP.

كيفية استخدام curl لتنزيل الملفات من سطر أوامر Linux
ذات صلة كيفية استخدام curl لتنزيل الملفات من سطر أوامر Linux

يعمل هذا الأمر لأن إعادة عنوان IP هو الإجراء الافتراضي لموقع الويب. إذا تغير الإجراء الافتراضي من أي وقت مضى ، فقد نحصل على نتيجة مختلفة يتم إرجاعها إلينا. لتلبية ذلك ، يمكننا تحديد أننا نطلب عنوان IP الخاص بنا عن طريق إضافة معرف "ip" إلى عنوان URL.

 حليقة ifconfig.me/ip 

إحضار عنوان IP خارجي باستخدام موقع ifconfig.me مع ip specfier

هذا يعيد عنوان IP كما كان من قبل.

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

يعد استخدام مورد موثوق به ويمكن الاعتماد عليه مثل خادم DNS طريقة أكثر قوة للحصول على عنوان IP الخارجي الخاص بك. للاستعلام عن خادم DNS ، نحتاج إلى استخدام الأمر dig.

ذات صلة: ما هو DNS ، وهل يجب علي استخدام خادم DNS آخر؟

باستخدام أمر الحفر

هذه المرة ، تم تثبيت dig على Fedora و Ubuntu ، وكان علينا فقط تثبيته على Manjaro.

الأمر هو الأمر المعتاد pacman ، لذلك لا مفاجآت هناك ، ولكن اسم الحزمة ليس ما قد تتوقعه.

 أدوات ربط sudo pacman -S 

تركيب حفر على مانجارو

لاستخدام dig لاكتشاف عنوان IP الخارجي الخاص بنا ، نحتاج إلى توجيهه إلى خادم DNS. نحن نستخدم خادم OpenDNS الذي توفره شركة Cisco.

نحتاج إلى تحديد اسم خادم DNS الذي نريد استخدامه ، مسبوقًا بعلامة "@". نحتاج أيضًا إلى تسمية نوع السجل الذي نرغب في استرداده. في هذه الحالة هو "مييب". يضمن خيار +short حصولنا على استجابة مقتضبة ، وليست مطولة.

 حفر @ resilver1.opendns.com myip.opendns.com + قصير 

استرداد عنوان IP خارجي من خادم DNS باستخدام الأمر dig

هذه المرة ، يحتوي عنوان IP الخاص بنا على حرف سطر جديد مطبوع بعده. كما سنرى ، تمت طباعة هذا بعد سلسلة عنوان IP ، فهو ليس جزءًا لا يتجزأ من السلسلة نفسها.

ذات صلة: كيفية استخدام الأمر dig على Linux

باستخدام هذه في البرنامج النصي

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

لاسترداد عنوان IP الخارجي الخاص بنا وتعيينه إلى متغير ، نحتاج فقط إلى التفاف الأمر داخل استبدال الأمر ، $(...) ، وتعيينه إلى متغير ، مثل هذا:

 متغير = $ (...)

يتم تنفيذ الأمر الموجود داخل الأقواس ويتم استبدال القيمة المعادة بالتعبير. في هذا المثال ، تم تبسيط الأمر إلى "المتغير = القيمة المرجعة".

ذات صلة: كيفية العمل مع المتغيرات في Bash

ها هو في نص. لقد أضفنا الخيار -s (صامت) إلى الأمر curl لمنعه من الإبلاغ عن تقدم استعادة البيانات.

 #! / بن / باش

extaddr = $ (curl -s ifconfig.me)

صدى "عنوان IP الخارجي هو $ extaddr (من cURL)"

انسخ هذا البرنامج النصي إلى محرر ، واحفظه باسم "getex1.sh" ، واجعله قابلاً للتنفيذ باستخدام الأمر chmod .

 chmod + x getex1.sh 

جعل نص قابل للتنفيذ مع chmod

دعنا ننفذ البرنامج النصي ونرى ما نحصل عليه.

 ./getex1.sh 

تشغيل البرنامج النصي getex1.sh

لفعل الشيء نفسه مع الخيار الأكثر قوة المتمثل في استخدام خادم DNS بدلاً من موقع ويب ، كل ما نحتاج إليه هو استبدال أمر curl بأمر dig one.

 #! / بن / باش

extaddr = $ (dig @ solutionver1.opendns.com myip.opendns.com + short)

صدى "عنوان IP الخارجي هو $ extaddr (from dig)"

احفظ هذا البرنامج النصي "getex2.sh" واجعله قابلاً للتنفيذ باستخدام chmod .

 chmod + x getex2.sh 

جعل نص قابل للتنفيذ مع chmod

دعونا ننفذ هذا البرنامج النصي.

 ./getex2.sh 

تشغيل البرنامج النصي getex2.sh

يمكننا أن نرى من إخراج النصين أنه على الرغم من طباعة الأمر بحرف سطر جديد على سطر الأوامر ، في البرنامج النصي لا يوجد سطر جديد مضاف إلى extaddr dig

اذهب للاعتمادية

من الأفضل دائمًا استخدام خدمة معترف بها وذات سمعة طيبة ولها تنسيق إخراج يمكن التنبؤ به بدلاً من استخدام موقع ويب "غير رسمي". مثل أي شيء آخر على الإنترنت ، ألق نظرة فاحصة على من تحصل على معلوماتك منه.

ذات صلة: كيفية السماح لبرامج Linux النصية باكتشاف أنها تعمل في الأجهزة الافتراضية