Canalizando senha para smbpasswd
-
08-06-2019 - |
Pergunta
Como posso canalizar a nova senha para smbpasswd para poder automatizar meu processo de instalação.
Solução
Graças à Mark Eu encontrei a resposta:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
BTW: (echo oldpasswd; echo newpasswd) | smbpasswd -s não funciona.
Outras dicas
Eu uso o seguinte em um dos meus scripts:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
Com o eco:
-e: seqüências de escape, como \ n
-n: não adicionar nova linha implícita no final
Com smbpasswd:
-a: adicionar novo usuário
-s: silent
Tente algo parecido com isto:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Use este
echo 'somepassword' | tee - | smbpasswd -s
Esta, infelizmente, não é desejável por duas razões: 1) se o utilizador usa uma combinação de '\ n' na palavra-passe, haverá um desencontro na entrada 2) Se houver usuários UNIX no sistema, então um usuário usando o ps utilitário pode ver a senha
A melhor maneira seria colocar os nomes em um arquivo e ler a partir do pexpect processo e utilização python para lê-los, não como abaixo, mas o script simples é o suficiente para ver como usar 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)
tente: ./smbpasswd.py USERNAME1 'f # @ (& * (_ \ n895'
Eu tive que criar um novo usuário Samba em um recurso Puppet 5.x Exec e por várias razões nenhuma das opções acima funcionou. Felizmente este comando bastante tolo aparência trabalhou:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
senha aqui é, naturalmente, "vagabundo".