Передача пароля в smbpasswd
-
08-06-2019 - |
Вопрос
Как мне передать новый пароль в smbpasswd, чтобы автоматизировать процесс установки.
Решение
Благодаря Марку я нашел ответ:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
КСТАТИ:(эхо oldpasswd;Echo newpasswd) | smbpasswd -s не работает.
Другие советы
В одном из моих скриптов я использую следующее:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
С эхом:
-е:escape-последовательности, например
-н:не добавляйте неявную новую строку в конце
С помощью smbpasswd:
-а:добавить нового пользователя
-с:тихий
Попробуйте что-то вроде этого:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Использовать этоecho 'somepassword' | tee - | smbpasswd -s
К сожалению, это нежелательно по двум причинам:1) Если пользователь использует комбинацию ' n' в пароле, в системе будет несоответствие, если в системе есть пользователи Unix, то пользователь, использующий утилиту PS, может увидеть пароль
Лучшим способом было бы поместить имена в файл и прочитать их из файла, а для их чтения использовать python 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'
Мне пришлось создать нового пользователя Samba в ресурсе Puppet 5.x Exec, и по разным причинам ничего из вышеперечисленного не помогло.К счастью, эта довольно глупая на вид команда сработала:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
Пароль здесь, конечно, «бродячий».
используя либо трубопроводы или перенаправление.