تعد أنابيب UNIX خطوة هائلة في تطوير أنظمة التشغيل UNIX وأنظمة التشغيل المشابهة لـ UNIX. لقد سمح للمستخدمين بأداء مهام حوسبة معقدة من خلال ربط مدخلات ومخرجات البرامج الأساسية معًا. تتوسع هذه المقالة في هذا الأمر من خلال توضيح كيفية استخدام أنبوب UNIX في Linux عبر شبكة باستخدام بروتوكول SSH.
نصيحة: إذا كنت بحاجة إلى تجديد معلوماتك، فتعرف على كيفية عمل التوجيه وإعادة التوجيه في Linux.
فهم خط أنابيب يونكس
تُستخدم الأنابيب في نظام Unix (وبالتالي Linux) لربط البرامج معًا وجعلها تعمل معًا. على سبيل المثال، باستخدام cat
، يمكنك إظهار محتويات الملف، ولكن إذا استخدمت أنبوبًا (|
)، يمكنك سلسلة cat
الأمر إلى more
أمر لتسهيل قراءة الملف.
الفكرة الأساسية هنا هي: program1 fileX | program2
. لا يقتصر الأمر على ملف واحد وبرنامجين فقط. يمكن أن تصبح الأنابيب متقدمة بقدر ما تحتاج إليها مع أكبر عدد ممكن من المعدلات التي يمكنك التفكير فيها.
فيما يلي بعض الطرق للاستفادة الجيدة من الأنابيب (|
) في حالات SSH.
في ملحوظة جانبية: تعلم بعض أفضل الحيل لتأمين خادم SSH الخاص بك.
نقل الدلائل المضغوطة تلقائيا
إحدى الطرق الأكثر شيوعًا لاستخدام أنابيب UNIX هي تخزين مخرجات البرنامج في ملف في مكان ما في النظام المحلي. على سبيل المثال، تشغيل echo "Hello, MakeTechEasier!" | tee Hello
سيتم تشغيل البرنامج echo
مع تخزين السلسلة “Hello, MakeTechEasier!” داخل ملف “مرحبا”.
ومع ذلك، يمكنك استخدام هذه الفكرة لنقل الأدلة عبر مضيفي Linux. للقيام بذلك، اقرأ المجلد الذي تريد الإرسال باستخدامه tar
، ثم قم بتوجيه ذلك إلى برنامج SSH الخاص بك:
tar czf - "~/Documents/myfolder" | ssh ramces@remote.host "tar xzf - -C ~/Documents/"
سيقوم هذا الأمر بتجميع المجلد الخاص بك في أرشيف tar وإرساله إلى الإخراج القياسي للأمر. سيقوم أنبوب UNIX بعد ذلك بقراءة تلك البيانات وإرسالها إلى مضيف Linux البعيد الخاص بك باستخدام SSH.
يمكنك أيضًا عكس هذا الأمر لإخراج ملفاتك من المضيفين البعيدين:
ssh ramces@remote.host "tar czf - ~/Documents/myfolder" | tar xzf - -C "~/Documents/"
جيد ان تعلم: تعلم كيف يمكنك إنشاء نسخ احتياطية سحابية مشفرة باستخدام rclone.
دفع واسترداد الملفات من المضيفين البعيدين
يمكنك أيضًا استخدام الأنابيب وSSH لإرسال ملفات فردية عبر الشبكة. وهذا يعمل باستخدام cat
كوسيلة لتحميل محتويات الملف وإرسالها عبر SSH:
cat < my.local.file | ssh ramces@remote.host "cat > my.remote.file"
سيتلقى المضيف البعيد دفق الإخراج من عملية القطة المحلية ويعيد بناء الملف كما هو.
لاسترداد ملف من مضيف بعيد، تحتاج إلى عكس ترتيب الأمر وتوفير المسار لملفك البعيد:
ssh ramces@remote.host "cat < my.remote.file" | cat > my.local.file
النسخ الاحتياطي واستعادة محركات الأقراص عن بعد
كما هو الحال مع إرسال الملفات والأدلة، من الممكن إجراء نسخ احتياطي لمحركات الأقراص بأكملها في Linux عن بعد باستخدام أنبوب UNIX وSSH. قد يكون هذا مفيدًا إذا كنت تريد إنشاء نسخ احتياطية سريعة خارج الموقع ولم يكن لديك محرك أقراص فعلي احتياطي في الوقت الحالي.
لعمل نسخة احتياطية من محرك الأقراص بأكمله، قم بتشغيل dd
مع تعيين المتغير “if=” على محرك الأقراص الذي تريد نسخه احتياطيًا، ثم قم بتوجيه ذلك إلى برنامج SSH الخفي الخاص بك:
sudo dd if=/dev/sda | ssh ramces@remote.host "dd of=sda.img"
يتيح لك عكس هذا الأمر أيضًا استعادة صورة القرص من جهاز بعيد إلى قرص فعلي:
ssh ramces@remote.host "dd if=sda.img" | sudo dd of=/dev/sda
علاوة على ذلك، سيعمل بناء جملة توجيه SSH هذا أيضًا مع أقسام القرص المنفصلة. على سبيل المثال، إذا كان نظامك يحتوي على قسم /home في “/dev/sda4″، فيمكنك تشغيل الأمر التالي لإنشاء نسخة احتياطية منه:
sudo dd if=/dev/sda4 | ssh ramces@remote.host "dd of=home.img"
لعِلمِكَ: تعرف على المزيد حول السجل ويمكنك استخدام الأمر dd لإنشاء صور القرص.
إعادة توجيه إدخال الصوت إلى جهاز بعيد
إحدى فوائد أنابيب SSH هي أنها تسمح لك بالتفاعل مع الأجهزة البعيدة كما لو كانت موردًا محليًا. يتضمن ذلك القدرة على الاستفادة من ملفات الجهاز مثل إدخال الصوت للنظام.
للقيام بذلك، قم بتشغيل ALSA فرعي عن بعد باستخدام SSH وأرسل مخرجاته إلى البرنامج الخفي ALSA المحلي الخاص بك:
ssh ramces@remote.host "arecord -f cd" | aplay
سيؤدي هذا إلى الاستماع إلى جهاز إدخال الصوت الافتراضي على الجهاز البعيد وتشغيل ما يسمعه على نظامك. ومع ذلك، فإن قلب الأوامر سيؤدي إلى إرسال إدخال الصوت الخاص بجهازك المحلي إلى إخراج الصوت الخاص بمضيفك البعيد:
arecord -f cd | ssh ramces@remote.host "aplay"
سيعمل أنبوب ALSA SSH أيضًا عند دمجه مع أدوات تشغيل الصوت الأخرى. على سبيل المثال، يمكنك إرسال مخرجات arecord من أنبوب SSH إلى ffmpeg:
ssh ramces@remote.host "arecord -f cd" | ffplay -nodisp -
دفق الفيديو المباشر من كاميرا ويب عن بعد
استخدام آخر رائع لأنابيب SSH في Linux هو بث خلاصات كاميرا الويب المباشرة للفيديو. تمامًا كما هو الحال مع الصوت، يتيح لك هذا الاستفادة من جهاز مضيف بعيد وعرض مخرجاته على جهازك المحلي.
للبث من كاميرا الويب الخاصة بمضيف بعيد، قم بتشغيل SSH باستخدام غلاف فرعي ffmpeg ثم قم بتوجيهه إلى عميل تشغيل الفيديو على جهازك المحلي:
ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mpv --demuxer=mkv /dev/stdin
سيقوم هذا الأمر ببث إخراج الفيديو الخام من كاميرا الويب الأولى على جهازك البعيد.
من الممكن أيضًا تسجيل اللقطات من كاميرا الويب البعيدة الخاصة بك إلى ملف منفصل. يمكنك القيام بذلك عن طريق إرسال البيانات من أنبوب SSH إلى نقطة الإنطلاق قبل إعادة توجيهها إلى مشغل الفيديو الخاص بك:
ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee my_recording.mkv | mpv --demuxer=mkv /dev/stdin
طباعة النص على وحدة التحكم عن بعد
وبصرف النظر عن الصوت والفيديو، يمكنك أيضًا استخدام أنابيب SSH لإرسال نص أولي على TTY لجهاز بعيد. يعد هذا مفيدًا إذا كنت تريد إرسال رسائل حالة إلى نظام لا يحتوي على واجهة مستخدم رسومية.
للبدء، قم بإنشاء أنبوب FIFO على جهازك المحلي:
تشغيل الاستماع tail
الأمر باستخدام FIFO الخاص بك وأرسل مخرجاته إلى برنامج SSH الخفي:
tail -f my-fifo | ssh root@remote.host "cat > /dev/tty0"
اختبر ما إذا كان توجيه FIFO الجديد يعمل عبر الشبكة عن طريق إرسال بيانات نصية باستخدام أمر echo:
echo "Hello, MakeTechEasier!" > my-fifo
ملحوظة: لن يعمل إرسال النص إلى TTY الخاص بجهازك إلا إذا قمت بتسجيل الدخول باستخدام الحساب الجذر لهذا الجهاز.
توصيل البيانات عن بعد إلى الحافظة المحلية
الجانب السلبي الأكبر لحافظة النظام هو أنها تعمل فقط مع الجهاز المحلي. تعد هذه مشكلة إذا كنت تعمل مع أجهزة كمبيوتر متعددة وتريد نقل البيانات دون إنشاء ملفات مؤقتة.
إحدى الطرق لإصلاح ذلك هي إنشاء أنبوب SSH يمكنه قراءة ملف بعيد وإرساله مباشرةً إلى حافظة النظام المحلي لديك:
ssh ramces@remote.host "cat < ~/ramces.txt" | xclip -sel clipboard
سيتم توصيل هذا الأمر بجهازك البعيد، وتشغيل الأداة المساعدة cat ثم البدء في قراءة ملف “ramces.txt”. بمجرد الانتهاء من ذلك، سيتم إرسال البيانات البعيدة مرة أخرى إلى جهازك المحلي وإعادة توجيهها إلى حافظة النظام لديك.
يمكنك أيضًا دفع الحافظة الحالية لنظامك كملف على جهازك البعيد باستخدام الأمر التالي:
xclip -sel clipboard -o | ssh ramces@remote.host "cat > ~/clip.txt"
إن تعلم كيفية إرسال البيانات عبر شبكة باستخدام أنابيب UNIX وSSH هو مجرد خطوة أولى في فهم كيفية عمل شبكات الكمبيوتر. اكتشف المزيد حول شبكتك من خلال تتبع المكان الذي تذهب إليه حزمك باستخدام Traceroute.
حقوق الصورة: ميخائيل فيسينكو عبر Unsplash. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.
اشترك في نشرتنا الإخبارية!
يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك
اكتشاف المزيد من إشراق العالم
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.