كيف تقرأ البيانات من مقبس في Bash على Linux
نشرت: 2022-06-28
يتيح لك سطر أوامر 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
خلاصة القول ، في Manjaro استخدم netcat
عندما ترى ncat
في الأمثلة في هذه المقالة.
الاستماع على مقبس
إذا كان البرنامج يستمع لاتصالات المقبس الواردة ، فإنه يعمل كخادم. يقال إن أي بيانات تأتي عبر اتصال المقبس يتم تلقيها بواسطة الخادم. يمكننا تكرار هذا السلوك بسهولة بالغة باستخدام nc
. يتم عرض أي بيانات مستلمة في نافذة المحطة.
نحتاج إلى إخبار nc
بالاستماع إلى الاتصالات ، باستخدام الخيار -l
(الاستماع) ، ونحتاج إلى تحديد المنفذ الذي سنستمع إليه للاتصالات. يجب أن تستخدم أي برامج أو عمليات عميل تحاول الاتصال بمثيل nc
هذا المنفذ نفسه. نخبر nc
أي منفذ للاستماع إليه باستخدام الخيار -p
(المنفذ).
يبدأ هذا الأمر nc
مقبس ، ويستمع إلى اتصال على المنفذ 6566:
nc -l -p 6566
أثناء انتظار اتصال وارد ، لا ينتج nc
أي إخراج. بمجرد إجراء الاتصال ، يتم عرض أي معلومات تم استردادها في نافذة المحطة الطرفية. هنا ، تم إجراء اتصال بواسطة برنامج عميل يعرّف نفسه على أنه "العميل 1."
يتم استلام كل شيء معروض بواسطة nc
من العميل. يحدث هذا العميل لإرسال اسمه ، ورسالة مرقمة تحتوي على الوقت والتاريخ.
عندما يقطع العميل اتصاله ، يتم إنهاء nc
إلى موجه الأوامر.

إرسال البيانات إلى ملف
لالتقاط البيانات من العميل في ملف ، يمكننا إرسال الإخراج من nc
إلى ملف باستخدام إعادة التوجيه. يحفظ هذا الأمر البيانات المستلمة في ملف يسمى “logfile.txt.”
nc -l -p 6566> logfile.txt
لن ترى أي إخراج — إنه يذهب إلى الملف — وللمفارقة ، لن تعرف ما إذا كان الاتصال قد حدث حتى إنهاء nc
. تشير العودة إلى موجه الأوامر إلى حدوث اتصال وأنه تم إنهاؤه بواسطة العميل.
يمكننا استخدام less
لمراجعة محتويات ملف “logfile.txt”.
أقل logile.txt
يمكنك بعد ذلك التمرير عبر البيانات والبحث باستخدام الوظائف المضمنة في less.
ذات صلة: كيفية استخدام أقل الأوامر على لينكس
إرسال البيانات إلى ملف ونافذة المحطة الطرفية
إذا كنت تريد أن ترى البيانات يتم تمريرها في النافذة الطرفية وإرسالها إلى ملف في نفس الوقت ، فقم بتوجيه الإخراج من nc
إلى tee
.
nc -l -p 6566 | نقطة الإنطلاق logfile.txt
قبول اتصالات متعددة
كل هذا جيد ، لكن له حدود. يمكننا قبول اتصال واحد فقط. نحن مقيدون بتلقي البيانات من عميل واحد. أيضًا ، عندما يسقط هذا العميل الاتصال ، ينتهي خادم مأخذ التوصيل nc
.
إذا كنت بحاجة إلى قبول اتصالات متعددة ، فنحن بحاجة إلى استخدام ncat
. سنحتاج إلى إخبار ncat
بالاستماع ، واستخدام منفذ معين ، تمامًا كما فعلنا مع nc
. لكننا سنستخدم أيضًا الخيار -k
(ابق على قيد الحياة). هذا يخبر ncat
في العمل وقبول الاتصالات من العملاء حتى عند انقطاع آخر اتصال نشط.
هذا يعني أن ncat
سيعمل حتى نختار إنهاءه باستخدام "Ctrl-C". سيتم قبول الاتصالات الجديدة سواء كانت ncat
متصلة حاليًا بأي عملاء أم لا.
ncat -k -l -p 6566
يمكننا أن نرى البيانات من العملاء المختلفين تظهر في الإخراج من ncat
أثناء اتصالهم.
الاتصال بالخادم
يمكننا أيضًا استخدام nc
كعميل مأخذ التوصيل والاتصال ببرنامج آخر يقبل الاتصالات ، ويعمل كخادم. في هذا السيناريو ، nc
هو عميل مأخذ التوصيل. للقيام بذلك ، نحتاج إلى إخبار nc
بمكان وجود برنامج الخادم على الشبكة.
تتمثل إحدى طرق القيام بذلك في توفير عنوان IP ورقم منفذ. إذا كان الخادم على نفس جهاز الكمبيوتر الذي نقوم بتشغيل nc
عليه ، فيمكننا استخدام عنوان IP للاسترجاع 127.0.0.1. لا يعني عدم وجود علامات تستخدم للإشارة إلى عنوان الخادم ورقم المنفذ. نحن فقط نقدم القيم المناسبة.
للاتصال بخادم على نفس جهاز الكمبيوتر ، وباستخدام المنفذ 6566 ، يمكننا استخدام عنوان IP الخاص بالاسترجاع. الأمر الذي يجب استخدامه هو:
nc 127.0.0.1 6566.007
يتم تمرير البيانات التي يتم nc
من الخادم في نافذة المحطة الطرفية.
إذا كنت تعرف اسم شبكة الكمبيوتر الذي يقوم بتشغيل برنامج الخادم ، فيمكنك استخدامه بدلاً من عنوان IP.
ان سي سولاكو 6566
استخدم "Ctrl + C" لقطع الاتصال.
سريع وسهل
يلائم nc
و ncat
الفاتورة عندما لا ترغب في كتابة معالج مقبس مخصص ، ولكنك تحتاج إلى جمع البيانات من بعض المصادر التي تدعم المقبس. تتيح لك إعادة توجيه الإخراج إلى ملف مراجعة الإخراج باستخدام less
، وتحليل الملف باستخدام أدوات مساعدة مثل grep
.
ذات صلة: كيفية استخدام أمر grep على نظام Linux