Automatizar o slappasswd

1

Eu quero automatizar o slappasswd, mas o seguinte não funciona:

[root@controller ~]# echo -e "vagrant\nvagrant\n" | slappasswd
New password:

enquanto funciona para automatizar o passwd:

[root@controller ~]# echo -e "vagrant\nvagrant\n" | passwd vagrant
Changing password for user vagrant.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.

Perguntas

  1. Por que esse método não funciona para automatizar o slappasswd?
  2. Como automatizar o slappasswd?
por 030 21.06.2015 / 17:06

2 respostas

2

De acordo com esta página de manual , você pode forneça a senha como um argumento:

slappasswd -s vagrant

Caso contrário, slappasswd lê a partir do tty e não stdin para obter um novo senha. Você pode usar algo como expect para conversar com ele neste caso.

    
por 21.06.2015 / 17:47
0

(Uma alternativa para minha resposta ). Programas que esperam interação do usuário em / dev / tty em vez de apenas ler stdin pode ser manipulado com o comando expect , que usa o tcl língua. Por exemplo, supondo que você espera em / usr / bin / expect, crie um arquivo setuserpw segurando isto:

#!/usr/bin/expect -f
expect_user -re "(\[^ \]+) (\[^ \]+)\n"
set user $expect_out(1,string)
set pw   $expect_out(2,string)
spawn passwd $user
expect "password:"
send "$pw\r"
expect "password:"
send "$pw\r"
expect eof

e não se esqueça de torná-lo executável

chmod +x ./setuserpw

O script lê stdin para duas palavras em uma linha e define variáveis user e pw para estes. Em seguida, ele executa (gera) o programa passwd para o usuário, conectando via pseudo tty (veja man pty ). Ele lê sua saída para um prompt correspondente "senha:". Em seguida, envia a senha para o programa e faz o mesmo novamente (assumindo que o programa lhe pede a senha duas vezes). Por exemplo:

./setuserpw <<!
user1 passwd1
!

No seu caso, substitua passwd por slappasswd e verifique os prompts que obter corresponder àqueles neste exemplo.

    
por 22.06.2015 / 08:24