Передача пароля на smbpasswd - PullRequest
       99

Передача пароля на smbpasswd

27 голосов
/ 15 августа 2008

Как передать новый пароль в smbpasswd, чтобы я мог автоматизировать процесс установки.

Ответы [ 7 ]

41 голосов
/ 15 августа 2008

Благодаря Марку я нашел ответ:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

Кстати: (echo oldpasswd; echo newpasswd) | smbpasswd -s не работает.

23 голосов
/ 15 сентября 2008

Я использую следующее в одном из моих сценариев:

   echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

С эхом:

-e: escape-последовательности, такие как \ n

-n: не добавлять неявный символ новой строки в конце

С smbpasswd:

-a: добавить нового пользователя

-s: беззвучно

11 голосов
/ 15 августа 2008

Попробуйте что-то вроде этого:

(echo oldpasswd; echo newpasswd) | smbpasswd -s
4 голосов
/ 04 ноября 2013

Используйте это echo 'somepassword' | tee - | smbpasswd -s

1 голос
/ 05 апреля 2013

К сожалению, это нежелательно по двум причинам: 1) если пользователь использует комбинацию '\ n' в пароле, во входных данных будет несоответствие 2) если в системе есть пользователи 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 # @ (& * (_ \ n895'

0 голосов
/ 22 ноября 2018

Мне пришлось создать нового пользователя Samba в ресурсе Puppet 5.x Exec, и по разным причинам ничего из вышеперечисленного не сработало. К счастью, эта довольно глупая команда сработала:

yes vagrant|head -n 2|smbpasswd -a -s vagrant

Пароль здесь, конечно, "vagrant".

0 голосов
/ 15 августа 2008

с использованием либо конвейеров или перенаправления .

...