Как я могу передать новый пароль в smbpasswd, чтобы я мог автоматизировать процесс установки.
Благодаря Марку я нашел ответ:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
BTW: (echo oldpasswd; echo newpasswd) | smbpasswd -s не работает.
Я использую следующее в одном из моих сценариев:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
С эхом:
e: последовательности спасения, как \n
n: don' t добавляют неявный newline в конце
С smbpasswd:
a: добавьте нового пользователя
s: тихий
Попробуйте сделать что-то вроде этого:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Используйте это ''''повторяют ' somepassword' | мишень - | smbpasswd-s'''
Это, к сожалению, не желательно по двум причинам:
Лучший путь состоял бы в том, чтобы поставить имена в файле и читать от файла и использовать питона pexpect, чтобы прочитать их, не как ниже, но простого сценария достаточно, чтобы видеть, как использовать pexpect
#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo [email protected]:.')
#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# (& * (_ \n895'
Я должен был создать нового пользователя Самбы в Марионетке 5.x Исполнительный ресурс, и по различным причинам ни одно из вышеупомянутого не работало. К счастью, эта довольно глупо выглядящая команда работала:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
Пароль здесь, конечно, " vagrant".