تنفيذ البرامج النصية باستخدام المزيد من المستخدمين
سؤال
أنا أكتب نص 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 .. كل ذلك دون طلب كلمات مرور متعددة.