Como fornecer senha diretamente para o sudo su -someuser no shell script

0

Eu tenho um requisito para automatizar no script de shell para sudo su -<someuser> , que pede senha.

Como fornecer senha diretamente ao sudo su - in shell script para servidores IBM AIX. Eu tentei usar echo <password> | sudo su -<someuser> não funcionou. gentilmente ajude nisso.

    
por raamsaara 24.08.2018 / 07:48

3 respostas

1

Você pode usar a opção :NOPASSWD do sudo para não precisar de uma senha. Gostar: %wheel ALL=(ALL) NOPASSWD: ALL em / etc / sudoers

    
por 24.08.2018 / 08:23
1

Use -S

man sudo :

-S, --stdin Write the prompt to the standard error and read the password from the standard input instead of using the terminal device. The password must be followed by a newline character.

para que você possa usar:

echo <myPassword> | sudo -S su <someuser>

Editar: Isso acima não funcionou em um teste do Ubuntu. Parece que o segundo comando "su" é rápido após a solicitação da senha.

Eu fiz uma solução alternativa para esperar um segundo para que a senha ecoada pudesse ser preenchida e, em seguida, o segundo sudo deveria poder executar sudo su - foobar :

echo "password" | sudo -S sleep 1 && sudo su - foobar
    
por 24.08.2018 / 07:56
1

Com expect . Um comando stub pode ser assim:

expect -c '
 log_user 0
 spawn /usr/bin/sudo su - someuser
 expect "*: "
 send "thepassword\n"
 interact
'

Veja esta resposta a uma pergunta semelhante.

Outra abordagem é com sudo -A .

  1. Crie um arquivo, diga pass .
  2. Torne o arquivo acessível somente a você: chmod go-rwx pass .
  3. Torne-o executável para você: chmod u+x pass
  4. Edite o arquivo e crie um script que imprima sua senha:

    #!/bin/sh
    printf '%s\n' 'yourpassword'
    
  5. Agora você pode fazer isso:

    SUDO_ASKPASS="./pass" sudo -A su - someuser
    

Nota: neste caso, você fornece a senha para sudo (não para su ); use o um sudo quer.

    
por 24.08.2018 / 08:09