سؤال

كيف يمكنني الأنابيب كلمة المرور الجديدة إلى smbpasswd لذا يمكن أتمتة بلدي عملية التثبيت.

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

المحلول

بفضل مارك وجدت الجواب:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

راجع للشغل:(صدى oldpasswd;صدى newpasswd) | smbpasswd -s لا يعمل.

نصائح أخرى

يمكنني استخدام ما يلي في أحد النصوص:

   echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

مع الصدى:

-e :تسلسلات الهروب, مثل

-n :لا إضافة الضمني في نهاية السطر

مع smbpasswd:

-a :إضافة مستخدم جديد

-s :الصمت

محاولة شيء من هذا القبيل:

(echo oldpasswd; echo newpasswd) | smbpasswd -s

استخدام هذا echo 'somepassword' | tee - | smbpasswd -s

هذا للأسف هو غير مرغوب فيه لسببين:1) إذا كان المستخدم يستخدم مزيج من ' ' في كلمة المرور سوف يكون هناك عدم تطابق في المدخلات 2) إذا كان هناك unix المستخدمين على النظام ، ثم يقوم المستخدم باستخدام الأداة المساعدة ps قد ترى كلمة المرور

أفضل طريقة هي وضع الأسماء في ملف و القراءة من الملف و استخدام بيثون pexpect قراءتها ، وليس مثل أدناه ، ولكن برنامج نصي بسيط يكفي لمعرفة كيفية استخدام pexpect

#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo myname@host.example.com:.')
#child.expect ('Password:')
#child.sendline (mypassword)
import pexpect
import sys
user=sys.argv[1]
passwd=sys.argv[2]
child = pexpect.spawn('/usr/bin/smbpasswd -a '+str(user))
child.expect('New SMB password:')
child.sendline (passwd)
child.expect ('Retype new SMB password:')
child.sendline (passwd)

ثم حاول:./smbpasswd.py userName1 'f#@(&*(_ 895'

وكان الجديدة سامبا المستخدم في دمية 5.× مدير الموارد لأسباب مختلفة لا يعمل.لحسن الحظ هذا سخيف-تبحث عملت الأمر:

yes vagrant|head -n 2|smbpasswd -a -s vagrant

كلمة السر هنا هو بالطبع "المتشرد".

باستخدام إما خطوط الأنابيب أو إعادة توجيه.

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