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
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.
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
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
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
.
pass
. chmod go-rwx pass
. chmod u+x pass
Edite o arquivo e crie um script que imprima sua senha:
#!/bin/sh
printf '%s\n' 'yourpassword'
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.