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

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

Как регистрировать все результаты тестов DBT в централизованной таблице snowflake
Как регистрировать все результаты тестов DBT в централизованной таблице snowflake
DBT имеет множество встроенных функций для автоматизации трудоемкой работы. Одной из таких функций является тест DBT.
29
0
29 259
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

Это просто не отвечает на вопрос.

markrian 30.07.2015 21:39

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

(echo oldpasswd; echo newpasswd) | smbpasswd -s
Ответ принят как подходящий

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

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

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

-1 Это как раз и есть ответ Марка, просто меняя имена переменных.

JorgeeFG 26.08.2013 18:35

+1 для компенсации JorgeeFG; Я думаю, что новые имена переменных содержат различие, если вы внимательно прочитаете. Ответ Марка подразумевает, что smbpasswd ожидает старый пароль и новый, но этот ответ подразумевает, что smbpasswd ожидает пароль и подтверждение пароля. Вторая интерпретация верна, и поэтому я считаю, что ответ Марка менее полезен, чем этот.

Matt 12.08.2015 03:09

В одном из своих скриптов я использую следующее:

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

С эхом:

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

-n: не добавлять неявную новую строку в конец

С помощью smbpasswd:

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

-s: тихий

или echo -ne "$PASS\n" | tee - | smbpasswd -a -s $LOGIN?

user533832 14.05.2013 15:31

-s от smbpasswd означает «использовать стандартный ввод для запроса пароля», а не «без звука».

Michael 25.08.2016 09:58

@Michael согласно samba.org/samba/docs/man/manpages/smbpasswd.8.html означает как "тихий" (без подсказок), так и "чтение из стандартного ввода" (вместо / dev / ptty)

Bruno De Fraine 25.08.2016 11:29

К сожалению, это нежелательно по двум причинам: 1) если пользователь использует комбинацию '\ n' в пароле, во вводе будет несоответствие 2) если в системе есть пользователи unix, то пользователь, использующий утилиту ps, может увидеть пароль

Лучшим способом было бы поместить имена в файл и прочитать из файла и использовать python pexpect для их чтения, а не как ниже, но простого скрипта достаточно, чтобы увидеть, как использовать 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'

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

спасибо, fwiw, это единственный синтаксис, с которым я мог работать в Dockerfile: RUN PASS=myrootpassword ; echo ${PASS} | tee - | smbpasswd -a -s

jamshid 01.08.2014 22:43

Я также нашел этот ответ полезным как единственный синтаксис, с которым я мог работать в ресурсе Puppet exec; подход, начинающийся с парена, не удался, потому что Puppet не смог найти команду "(echo". Спасибо!

dbrewer 20.07.2016 00:48

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

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

Пароль здесь конечно же "бродячий".

Другие вопросы по теме