Como fornecer senha para sudo su no script

1

Exemplo de script:

sudo su admin
ls /usr/bin
exit

Quando eu executo com:

biske@comp1:~$ ./script

Em seguida, o prompt é alterado para:

admin@comp1:/home/biske$

Quando eu digito exit, ele realmente imprime essas linhas:

exit bin  games  include  lib  lib32  local sbin  share  src

Eu queria produzir sem exigir que o usuário insira nada.

Suponho que o problema poderia ser resolvido alimentando esse comando sudo su com senha.

Existe uma maneira de fazer isso?

    
por Иван Бишевац 12.07.2013 / 09:54

1 resposta

2

sudo su user entrará em um novo shell. Essa é a última coisa que você quer fazer quando estiver em um script não interativo. Desculpe, quero dizer que é a última coisa que você quer fazer em um script depois de codificar uma senha nele! Por favor, evite isso.

Você estaria muito melhor em pular su e usar o sudo sozinho:

sudo -u admin -- ls /usr/bin

Ou se falhar, certifique-se de que seu script seja executado como root com este bloco:

if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

E então não há necessidade de interagir dentro do roteiro. Seu script pode usar sudo -u... command sem precisar alterar a senha.

    
por Oli 12.07.2013 / 10:08