Responda a solicitação de senha programaticamente via shell script

1

Eu gostaria de responder programaticamente um prompt de senha usando o script de shell somente quando solicitado. É possível automatizar essa tarefa dessa maneira? Eu quero evitar outras ferramentas inteiramente - então não expect ou similar - eu gostaria de conseguir isso simplesmente usando o shell script.

    
por user79092 30.07.2014 / 00:46

1 resposta

4

Como você não especifica qual shell, eu apenas trapaceio. Você pode encontrar o seguinte e muito mais em grml.org 's referência do comando zsh-lover man page.

  $ zmodload zsh/zpty
  $ zpty PW passwd $1
  $ zpty PW passwd $1
# ''-r'': read the output of the command name.
# ''z'' : Parameter
  $ zpty -r PW z '*password:'
# send the to command name the given strings as input
  $ zpty -w PW $2
  $ zpty -r PW z '*password:'
  $ zpty -w PW $2
# The second form, with the -d option, is used to delete commands
# previously started, by supplying a list of their names. If no names
# are given, all commands are deleted. Deleting a command causes the HUP
# signal to be sent to the corresponding process.
  $ zpty -d PW

Eu até consegui fazer isso sozinho. Aqui está uma cópia + colar do meu terminal:

mikeserv@localhost ~ % :                  
sudo zsh -c '
zmodload zsh/zpty
userdel dummy
useradd -m dummy
zpty dummyadd "passwd dummy"
zpty -r dummyadd nl "*UNIX password:"
zpty -w dummyadd "dummypw^M"
zpty -r dummyadd nl "*UNIX password:"
zpty -w dummyadd "dummypw^M"
zpty -r dummyadd nl "*"
printf %s\n "$nl"
zpty -d dummyadd
'
userdel: user 'dummy' does not exist
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

mikeserv@localhost ~ % ssh dummy@localhost
dummy@localhost's password: 
dummy@localhost ~ % 

Demorei algumas tentativas - é por isso que o diretório pessoal do dummy já estava lá - mas você pode ver que quando eu executei esse comando esse usuário não existia e criei uma sessão para definindo a senha do dummy . É um roteiro muito desajeitado, mas, quando acabou, consegui fazer o login como fictício .

Então eu acho que é possível. Talvez não aconselhável , mas talvez isso dependa do que você é.

    
por 30.07.2014 / 02:27

Tags