الأنابيب كلمة السر smbpasswd
-
08-06-2019 - |
سؤال
كيف يمكنني الأنابيب كلمة المرور الجديدة إلى 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
كلمة السر هنا هو بالطبع "المتشرد".
باستخدام إما خطوط الأنابيب أو إعادة توجيه.