Criando um script de shell com ações que exigem interação do usuário

0

Como posso criar um script de shell contendo alguns comandos que precisam de entrada do usuário, por exemplo

#!/bin/sh
useradd test
passwd test

O comando passwd precisa de alguma entrada (a senha). Posso servir esta entrada através do script de shell? Obrigada!

    
por strauberry 28.09.2011 / 15:02

4 respostas

1

O comando passwd é especificamente protegido contra isso (acredito que para reduzir sua utilidade em ataques de adivinhação de senha de força bruta). Ele lê a entrada somente de um terminal conectado e não do STDIN normal - isso dificulta usá-lo para alterar as senhas do script.

Mas veja a página man do usermod

    
por 28.09.2011 / 15:12
2

Normalmente, não, uma vez que a maioria dos programas que requerem uma senha não lerão de stdin como os processos regulares do UNIX. Em vez disso, eles tentarão ler a senha do controlador tty.

Se você quiser criar scripts para esses aplicativos, precisará usar ferramentas como esperar .

    
por 28.09.2011 / 15:11
1

Exemplo:

$ ./input.sh foo bar baz

Fonte:

#!/bin/bash
# input.sh

echo $0       # input.sh
echo $1       # foo
echo $3       # baz
    
por 28.09.2011 / 15:09
0

Use esperar. Um exemplo aqui

#!/usr/bin/expect
set username [lindex $argv 0]
set newpass [lindex $argv 1]
spawn passwd $username
expect {*password:}
send "$newpass\r"
expect {*password:}
send "$newpass\r" 
    
por 28.09.2011 / 16:30