كيف يمكنني تعيين كلمة مرور الجذر في حاوية عامل ميناء من برنامج نصي?

لدي البرنامج النصي الذي يعمل على المضيف ويخلق/يبدأ/يتوقف حاوية عامل الميناء. أود أن البرنامج النصي لتغيير كلمة المرور للمستخدم الجذر داخل الحاوية.

منذ الحاوية هو خادم سش ، حاولت:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

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

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

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

PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

سيتم فتح نافذة منبثقة ، وطلب كلمة المرور ، والعودة it.No كلمة المرور المخزنة في البرنامج النصي

إذا كان لديك حاوية عامل ميناء حيث تحتاج إلى تعيين كلمة مرور ، دون الاهتمام بالكثير عن الأمان، فيمكنك إضافة بيان في ملف عامل الميناء:

RUN echo "root:root" | chpasswd

هذا لا علاقة لعامل الميناء. عليك أن تقول صراحة passwd أنك ذاهب لتوفير كلمة المرور من stdin.

user='root'pass='newpassword'chpasswd <<<"$user:$pass"

هذا يعمل لا تشوبه شائبة على أوبونتو 14.04.4 لتس:

في البرنامج النصي الذي يعيد بناء الحاوية (التي يجب تشغيلها على "المضيف") ، أضف هذه الأسطر:

$PASS='<a-good-password>'echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd