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

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

15.08.2008 06:08:55
7 ОТВЕТОВ

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

-3
15.08.2008 06:16:12
Это просто не отвечает на вопрос.
markrian 30.07.2015 18:39:08

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

(echo oldpasswd; echo newpasswd) | smbpasswd -s
12
15.08.2008 06:31:29
РЕШЕНИЕ

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

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

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

45
15.08.2008 08:37:32
-1 Это как раз и есть ответ Марка, просто смена имен переменных.
JorgeeFG 26.08.2013 14:35:59
+1 к смещению JorgeeFG; Я думаю, что новые имена переменных содержат различие, если вы внимательно прочитаете. Ответ Марка подразумевает, что smbpasswd ожидает старый пароль и новый, но этот ответ подразумевает, что smbpasswd ожидает пароль и подтверждение пароля. Вторая интерпретация является правильной, и поэтому я чувствую, что ответ Марка менее полезен, чем этот.
Matt 12.08.2015 00:09:36

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

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

С эхом:

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

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

С помощью smbpasswd:

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

-s: молчать

23
15.09.2008 13:20:38
или echo -ne "$PASS\n" | tee - | smbpasswd -a -s $LOGIN?
user533832 14.05.2013 11:31:35
smbpasswd -s означает «использовать стандартный ввод пароля», а не «молчать»
Michael 25.08.2016 06:58:24
@ Майкл в соответствии с samba.org/samba/docs/man/manpages/smbpasswd.8.html означает «молчание» (без подсказок) и «чтение из стандартного ввода» (вместо / dev / ptty)
Bruno De Fraine 25.08.2016 08:29:35

Это, к сожалению, нежелательно по двум причинам: 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'

1
5.04.2013 18:37:29

Использовать это echo 'somepassword' | tee - | smbpasswd -s

4
4.11.2013 14:47:40
спасибо, это единственный синтаксис, который я смог получить в Dockerfile: RUN PASS=myrootpassword ; echo ${PASS} | tee - | smbpasswd -a -s
jamshid 1.08.2014 18:43:12
Я также нашел этот ответ полезным в качестве единственного синтаксиса, который я мог получить, работая на ресурсе Puppet exec; подход, начинающийся с парена, не удался, потому что Puppet не смог найти команду "(echo". Спасибо!
dbrewer 19.07.2016 21:48:40

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

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

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

1
22.11.2018 09:56:05