كيفية تشغيل برنامج نصي محلي على خادم Linux بعيد

نشرت: 2022-09-10
كمبيوتر محمول على خلفية زرقاء يعرض واجهات سطر أوامر Linux.
fatmawati achmad zaenuri / Shutterstock.com

تعمل برمجة المهام المتكررة على تحسين كفاءة إدارة النظام. هذا رائع للأجهزة المحلية ، ولكن ماذا لو كنت تشرف على الخوادم البعيدة؟ هل يمكنك تشغيل برنامج نصي محلي على كمبيوتر بعيد ؟ نعم!

اتصالات عن بعد

عادةً ما تتضمن إدارة النظام عن بُعد إجراء اتصال بالكمبيوتر البعيد عبر اتصال ecure sh ell. يوفر لك اتصال SSH موجه أوامر على الكمبيوتر البعيد. يمكنك بعد ذلك المضي قدمًا وإجراء أي صيانة للنظام مطلوبة.

تساعد البرمجة النصية لـ Shell عن طريق السماح لك بلف سلسلة من الأوامر في برنامج نصي يمكن تشغيله كما لو كان برنامجًا ، ويجمع العديد من الإجراءات في تعليمات سطر أوامر واحد.

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

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

يوفر Bash و SSH طريقة للقيام بذلك.

اتصالات SSH بدون كلمة مرور

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

كيفية إنشاء وتثبيت مفاتيح SSH من Linux Shell
ذات صلة كيفية إنشاء وتثبيت مفاتيح SSH من Linux Shell

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

إذا كنت تقوم بالفعل بإدارة النظام عن بُعد عليها ، فيجب أن يكون كلا هذين المطلبين مستوفين بالفعل.

لإنشاء زوج مفاتيح SSH ، اكتب:

 ssh-كجن

إذا كان لديك حساب يسمى "dave" على جهاز كمبيوتر يسمى "fedora-36.local" ، فيمكنك إرسال وتثبيت مفتاح SSH العمومي الخاص بك إليه باستخدام هذا الأمر:

 ssh-copy-id [email protected]

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

 ssh [email protected]

تشغيل برنامج نصي محلي عن بعد

بالنسبة لهذه الاختبارات ، فإن خادمنا البعيد هو كمبيوتر Linux يسمى "fedora-36.local." لقد قمنا بإعداد مفاتيح SSH واختبرنا اتصالنا بدون كلمة مرور بالخادم البعيد من جهاز الكمبيوتر المحلي الخاص بنا.

نصنا بسيط جدا يقوم بكتابة طابع زمني في ملف يسمى “timestamp.txt” ، على الخادم البعيد. لاحظ أن النص ينتهي بأمر الخروج. هذا مهم ، في بعض الأنظمة القديمة ، من الممكن تشغيل البرنامج النصي حتى اكتماله ، لكن اتصال SSH يظل مفتوحًا.

 #! / بن / باش

التاريخ >> timestamp.txt

خروج 0

انسخ هذا النص في محرر ، واحفظه كـ “local.sh” ، ثم استخدم chmod لجعله قابلاً للتنفيذ.

 chmod + x local.sh 

استخدام chmod لجعل نص برمجي قابل للتنفيذ

على أجهزتنا المحلية ، سنطلق البرنامج النصي مثل هذا:

 ssh [email protected] 'bash -s' <local.sh 

إطلاق برنامج نصي محلي للتشغيل على خادم بعيد عبر SSH

إليك كيف يعمل هذا.

  • ssh [email protected] : اتصال SSH الذي نجريه بالجهاز البعيد. يستخدم هذا الأمر ssh وحساب المستخدم الموجود مسبقًا على الخادم البعيد وعنوان الخادم البعيد.
  • 'bash -s' : يؤدي هذا إلى قراءة Bash للأوامر من تدفق الإدخال القياسي. يتيح لـ Bash قراءة المدخلات المعاد توجيهها أو الأنابيب.
  • <local.sh : نحن نعيد توجيه البرنامج النصي إلى Bash.

عند تشغيل البرنامج النصي ، نعود إلى موجه الأوامر الخاص بالجهاز المحلي. بالانتقال إلى الآلة البعيدة ، يمكننا استخدام cat للبحث داخل ملف “timestamp.txt”.

 الطابع الزمني للقطط. xt 

يمكننا أن نرى الطابع الزمني لآخر اتصال - وحاليًا فقط -. يؤدي تشغيل البرنامج النصي المحلي عدة مرات إلى إضافة طوابع زمنية مقابلة إلى الملف البعيد.

 الطابع الزمني للقطط. xt 

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

تمرير الحجج إلى النص

يمكنك تمرير وسيطات سطر الأوامر إلى البرنامج النصي. سنقوم بتعديل البرنامج النصي الخاص بنا لتوقع ثلاث معلمات لسطر الأوامر. يتم إعادة توجيهها إلى ملف “timestamp.txt” جنبًا إلى جنب مع الطابع الزمني.

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

 #! / بن / باش

صدى "$ 1 $ 2 $ 3" ​​>> timestamp.txt
التاريخ >> timestamp.txt

خروج 0

الأمر الذي نحتاج إلى استخدامه مشابه للمثال السابق ، مع بعض التغييرات.

 ssh [email protected] "bash -s" - <local2.sh "How-To \ Geek" "Linux" "Articles" 

تشغيل برنامج نصي محلي مع معلمات سطر الأوامر للتشغيل على خادم بعيد عبر SSH

الواصلة المزدوجة " -- " تخبر Bash أن ما يلي لا ينبغي اعتباره معلمات سطر أوامر لأمر ssh . تتبع المعلمات الثلاثة للبرنامج النصي اسم البرنامج النصي ، كالمعتاد. لاحظ أننا استخدمنا الشرطة المائلة للخلف " \ " للهروب من المساحة في معلمة "How-To \ Geek".

يمكننا التحقق مع cat من أن معلماتنا قد تم استلامها ومعالجتها بشكل صحيح على الخادم البعيد.

 الطابع الزمني للقطط. xt 

التحقق من تلقي معلمات البرنامج النصي ومعالجتها بشكل صحيح على الخادم البعيد

تشغيل قسم من البرنامج النصي عن بعد

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

كيفية استخدام "Here Documents" في Bash على Linux
ذات صلة كيفية استخدام "مستندات هنا" في Bash على Linux

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

هذا هو البرنامج النصي “local3.sh” ، والذي يحتوي على مستند هنا.

 #! / بن / باش

يمكن إجراء # معالجة محلية هنا

# تتم المعالجة عن بعد هنا
ssh -T [email protected] << _remote_commands

ستتم إضافة # أوامر ليتم تشغيلها عن بُعد هنا
القرص المضغوط / المنزل / ديف / المستندات
# إلخ.

# أخيرًا ، قم بتحديث ملف الطابع الزمني
صدى "Script3.sh:" $ (التاريخ) >> /home/dave/timestamp.txt

# هذا هو الملصق الذي يشير إلى نهاية إعادة التوجيه
_الأوامر

# يمكن إجراء المزيد من المعالجة المحلية هنا

خروج 0

نحن نستخدم الأمر ssh بنفس تفاصيل الاتصال كما كان من قبل. نحن نتصل كمستخدم "ديف" على خادم بعيد يسمى "فيدورا -36.لوكال". نحن نستخدم أيضًا الخيار -T (تعطيل تخصيص المحطة الزائفة). هذا يمنع الخادم البعيد من توفير محطة طرفية تفاعلية لهذا الاتصال.

يتبع إعادة التوجيه " << " اسم التسمية . في هذا المثال ، نستخدم "_remote_commands." لا يوجد شيء مميز في هذه التسمية ، إنها مجرد تسمية.

يتم إرسال جميع الأوامر التي تظهر على الأسطر التي تلي إعادة التوجيه عبر اتصال SSH. تتوقف إعادة التوجيه عند مواجهة التسمية. ثم يستمر تنفيذ البرنامج النصي بالسطر الذي يلي التسمية.

لنقم بتشغيل البرنامج النصي المختلط للمعالجة المحلية / البعيدة.

 ./local3.sh 

إطلاق script3.sh بمزيج من المعالجة المحلية والبعيدة

كما هو متوقع ، نرى إدخالًا جديدًا في ملف “timestamp.txt”.

 الطابع الزمني للقطط. xt 

وسّع نطاق وصولك

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

ذات صلة: كيفية إدارة خوادم Linux باستخدام واجهة الويب Cockpit