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

StackOverflow https://stackoverflow.com/questions/3657440

  •  01-10-2019
  •  | 
  •  

سؤال

أنا أكتب نص Bash الذي يدعو الكثير من البرامج النصية الأخرى.
يجب تنفيذ العديد من البرامج النصية كـ user_1 ولكن العديد من البرامج النصية مثل user_2.
يجب استدعاء البرامج النصية بتسلسل صارم. أبدأ البرنامج النصي الخاص بي كـ user_1 وأستخدم SU عدة مرات لتصبح user_2. تتطلب هذه الأوقات كلمة مرور ، لذلك يجب أن أعيد إعادة توزيعها عدة مرات. أود تجنب ذلك ، لكن SU ليس لديه معلمة كلمة مرور.
Sudo وتوقع لم يتم تثبيتها.

هل كانت مفيدة؟

المحلول 4

لقد حلت المشكلة باستخدام SSH. لقد قمت بإنشاء مفتاح المصادقة لـ user_1 ونشرت إلى user2. كلمة المرور غير ضرورية بعد الآن.

ssh -l user_1 hostname  "command_1; command_2"

نصائح أخرى

  • قم بعمل شوكة (باستخدام '&') لـ user_1 و user_2. يجب عليهم التواصل (المشابه لعلم العميل) باستخدام "ملف القفل" (Semaphore). على سبيل المثال user_1 القيام بشيء ما والتحقق من user_2 هو "قفل ملف" موجود في بينما ... النوم عقدة

  • ربما هذا غبي ، لكن يمكنك استخدامه ssh user@localhost مفاتيح النهاية

إذا كان لديك ZSH ، أعتقد أنه يمكنك القيام بذلك بسهولة - شيء مثل:

#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...

user1_script:

#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...

إذا كنت عالقًا ، ولديك ZSH ، فهذا يستحق المحاولة على أي حال.

يمكنك تشغيل الجذر. تبدو محفوفة بالمخاطر؟ ليس إذا كنت حريصًا وتسبق كل أمر مع SU وأضف اسم المستخدم مثل:

su -c 'script1' user_1 && su -c 'script2' user_2

سيؤدي ذلك (على افتراض أنك تبدأ كجذر) إلى تغيير المستخدم إلى user_1 قبل تشغيل Script1 ثم العودة إلى الجذر ثم التغيير إلى user_2 لتشغيل Script2 .. كل ذلك دون طلب كلمات مرور متعددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top