Как я могу подключить новый пароль к smbpasswd, чтобы я мог автоматизировать процесс установки.
Пароль паролей к smbpasswd
Ответ 1
Благодаря Марку я нашел ответ:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
BTW: (echo oldpasswd; echo newpasswd) | smbpasswd -s не работает.
Ответ 2
В одном из моих скриптов я использую следующее:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
С эхом:
-e: escape-последовательности, такие как \n
-n: не добавлять неявную строку в конец
С smbpasswd:
-a: добавить нового пользователя
-s: silent
Ответ 3
Попробуйте что-то вроде этого:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Ответ 4
Используйте это
echo 'somepassword' | tee - | smbpasswd -s
Ответ 5
Это, к сожалению, нежелательно по двум причинам: 1) если пользователь использует комбинацию "\n" в пароле, на входе будет несоответствие 2) если в системе есть пользователи unix, тогда пользователь, использующий утилиту ps, может видеть пароль
Лучшим способом было бы поместить имена в файл и прочитать из файла и использовать python pexpect для их чтения, но не так, как показано ниже, но простого script достаточно, чтобы увидеть, как использовать 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'
Ответ 6
используя конвейеры или redirection.