Вопрос

Как мне передать новый пароль в 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

Пароль здесь, конечно, «бродячий».

используя либо трубопроводы или перенаправление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top