كيف تقرأ البيانات من مقبس في Bash على Linux

نشرت: 2022-06-28
الكود الثنائي يتدفق عبر الكابلات الضوئية.
XYZ / Shutterstock.com

يتيح لك سطر أوامر Linux استرداد البيانات إما من خلال الاستماع على مقبس أو الاتصال بمقبس. يمكن التقاط البيانات في ملف نصي. نوضح لك كيف.

عملاء وخوادم المقبس

تسمح المقابس للبرامج المتصلة بالشبكة بالاتصال. تم تطبيقها لأول مرة في نظام التشغيل 4.2BSD Unix ، الذي تم إنشاؤه في جامعة كاليفورنيا ، بيركلي ، في عام 1983. تم تبنيها بسرعة بواسطة System V Unix و Microsoft Windows.

ماذا يعني "كل شيء هو ملف" في لينكس؟
ذات صلة ماذا يعني "كل شيء هو ملف" في لينكس؟

المقبس هو نقطة نهاية لاتصال شبكة البرامج ، ويتم تجريده بحيث يمكن التعامل معه كمقبض ملف. هذا يعني أنه يتناسب مع مبدأ تصميم Unix و Linux العام "كل شيء هو ملف". لا نعني المقبس المادي على الحائط الذي تقوم بتوصيل كابل الشبكة به.

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

يتم تنفيذ المقابس كواجهة برمجة تطبيقات (API) ، مما يسمح لمطوري البرامج بالاتصال بوظيفة المقبس من داخل الكود الخاص بهم. لا بأس إذا كنت مبرمجًا ، لكن ماذا لو لم تكن كذلك؟ أو ربما تكون كذلك ، لكن حالة الاستخدام الخاصة بك لا تستدعي كتابة تطبيق؟ يوفر Linux أدوات سطر الأوامر التي تتيح لك استخدام خوادم مأخذ التوصيل - الأساسية - وعملاء مأخذ التوصيل ، وفقًا لاحتياجاتك ، لاسترداد البيانات أو تلقيها من العمليات الأخرى التي تدعم المقبس.

ذات صلة: ما هي واجهة برمجة التطبيقات وكيف يستخدمها المطورون؟

العلاقات ليست سهلة أبدا

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

لقد فحصنا توزيعات Arch و Manjaro و Fedora و Ubuntu الأخيرة. الشخص الوحيد الذي تطلب تثبيت الأدوات هو Manjaro. في Manjaro ، تحتاج إلى تثبيت حزمة netcat للحصول على nc ، لكنك لا تحصل على ncat ، ستحصل على netcat . وفي Manjaro ، يعد nc رابطًا رمزيًا لـ netcat .

 sudo pacman -S netcat 

تثبيت حزمة netcat على Manjaro

خلاصة القول ، في Manjaro استخدم netcat عندما ترى ncat في الأمثلة في هذه المقالة.

الاستماع على مقبس

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

نحتاج إلى إخبار nc بالاستماع إلى الاتصالات ، باستخدام الخيار -l (الاستماع) ، ونحتاج إلى تحديد المنفذ الذي سنستمع إليه للاتصالات. يجب أن تستخدم أي برامج أو عمليات عميل تحاول الاتصال بمثيل nc هذا المنفذ نفسه. نخبر nc أي منفذ للاستماع إليه باستخدام الخيار -p (المنفذ).

يبدأ هذا الأمر nc مقبس ، ويستمع إلى اتصال على المنفذ 6566:

 nc -l -p 6566 

بدء تشغيل nc كخادم مأخذ توصيل

أثناء انتظار اتصال وارد ، لا ينتج nc أي إخراج. بمجرد إجراء الاتصال ، يتم عرض أي معلومات تم استردادها في نافذة المحطة الطرفية. هنا ، تم إجراء اتصال بواسطة برنامج عميل يعرّف نفسه على أنه "العميل 1."

nc تلقي البيانات من العميل

يتم استلام كل شيء معروض بواسطة nc من العميل. يحدث هذا العميل لإرسال اسمه ، ورسالة مرقمة تحتوي على الوقت والتاريخ.

عندما يقطع العميل اتصاله ، يتم إنهاء nc إلى موجه الأوامر.

تم إنهاء nc بعد انقطاع الاتصال من جانب العميل

إرسال البيانات إلى ملف

لالتقاط البيانات من العميل في ملف ، يمكننا إرسال الإخراج من nc إلى ملف باستخدام إعادة التوجيه. يحفظ هذا الأمر البيانات المستلمة في ملف يسمى “logfile.txt.”

 nc -l -p 6566> logfile.txt 

إعادة توجيه الإخراج من nc إلى ملف نصي

لن ترى أي إخراج — إنه يذهب إلى الملف — وللمفارقة ، لن تعرف ما إذا كان الاتصال قد حدث حتى إنهاء nc . تشير العودة إلى موجه الأوامر إلى حدوث اتصال وأنه تم إنهاؤه بواسطة العميل.

يمكننا استخدام less لمراجعة محتويات ملف “logfile.txt”.

 أقل logile.txt 

استخدام أقل لفحص ملف نصي

يمكنك بعد ذلك التمرير عبر البيانات والبحث باستخدام الوظائف المضمنة في less.

مراجعة المخرجات الملتقطة من nc في أقل

ذات صلة: كيفية استخدام أقل الأوامر على لينكس

إرسال البيانات إلى ملف ونافذة المحطة الطرفية

إذا كنت تريد أن ترى البيانات يتم تمريرها في النافذة الطرفية وإرسالها إلى ملف في نفس الوقت ، فقم بتوجيه الإخراج من nc إلى tee .

 nc -l -p 6566 | نقطة الإنطلاق logfile.txt 

إرسال الإخراج من nc إلى ملف وإلى النافذة الطرفية في نفس الوقت

قبول اتصالات متعددة

كل هذا جيد ، لكن له حدود. يمكننا قبول اتصال واحد فقط. نحن مقيدون بتلقي البيانات من عميل واحد. أيضًا ، عندما يسقط هذا العميل الاتصال ، ينتهي خادم مأخذ التوصيل nc .

إذا كنت بحاجة إلى قبول اتصالات متعددة ، فنحن بحاجة إلى استخدام ncat . سنحتاج إلى إخبار ncat بالاستماع ، واستخدام منفذ معين ، تمامًا كما فعلنا مع nc . لكننا سنستخدم أيضًا الخيار -k (ابق على قيد الحياة). هذا يخبر ncat في العمل وقبول الاتصالات من العملاء حتى عند انقطاع آخر اتصال نشط.

هذا يعني أن ncat سيعمل حتى نختار إنهاءه باستخدام "Ctrl-C". سيتم قبول الاتصالات الجديدة سواء كانت ncat متصلة حاليًا بأي عملاء أم لا.

 ncat -k -l -p 6566 

الاستماع إلى اتصالات متعددة مع ncat

يمكننا أن نرى البيانات من العملاء المختلفين تظهر في الإخراج من ncat أثناء اتصالهم.

اتصال العملاء الثاني والثالث بـ ncat

الاتصال بالخادم

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

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

للاتصال بخادم على نفس جهاز الكمبيوتر ، وباستخدام المنفذ 6566 ، يمكننا استخدام عنوان IP الخاص بالاسترجاع. الأمر الذي يجب استخدامه هو:

 nc 127.0.0.1 6566.007 

استخدام nc كعميل مأخذ توصيل

يتم تمرير البيانات التي يتم nc من الخادم في نافذة المحطة الطرفية.

استرجاع البيانات من خادم مأخذ مع nc

إذا كنت تعرف اسم شبكة الكمبيوتر الذي يقوم بتشغيل برنامج الخادم ، فيمكنك استخدامه بدلاً من عنوان IP.

 ان سي سولاكو 6566 

استخدام nc للاتصال بخادم مأخذ توصيل باستخدام اسم الكمبيوتر الذي يعمل عليه الخادم

استخدم "Ctrl + C" لقطع الاتصال.

سريع وسهل

يلائم nc و ncat الفاتورة عندما لا ترغب في كتابة معالج مقبس مخصص ، ولكنك تحتاج إلى جمع البيانات من بعض المصادر التي تدعم المقبس. تتيح لك إعادة توجيه الإخراج إلى ملف مراجعة الإخراج باستخدام less ، وتحليل الملف باستخدام أدوات مساعدة مثل grep .

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