Pergunta

Como posso canalizar a nova senha para smbpasswd para poder automatizar meu processo de instalação.

Foi útil?

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".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top