Que outras variáveis bash estão disponíveis durante a execução, como $ USER, que podem ajudar no meu script?

2

Isso está relacionado à pergunta Por que isso está ignorando a senha do SUDO? . Em que um dos respondentes respondeu a pergunta de uma forma impressionante, e muito, muito claro para qualquer novato. Agora aqui está uma questão que não consigo entender.

Eu escrevi um script para iniciar o plugin vmware firefox (não se preocupe. Eu desisti disso e agora rodei vBox muito felizmente. Eu deixei o vmware para meus servidores :))

Eu precisava iniciar o plug-in como sudo, mas também precisava passar um argumento (senha) para ele, que era o mesmo.

Então, se minha senha fosse Hello123 , o comando seria: sudo ./myscript.sh hi other Hello123

Executando a partir da linha de comando, o script pedirá minha senha sudo e depois executará. Eu queria capturar essa senha e passá-la também. Eu também queria rodar graficamente, então eu tentei o gksudo, e existe uma opção -p que retorna a senha para atribuição de variável.

Bem, isso foi um pesadelo porque eu ainda seria solicitado pelo sudo original: veja abaixo

Find UserName

vUser=$USER
Find password (and hopefully enable sudo)

vP=gksudo -p -D somedescriptiontext echo
Execute command

gksudo ./myscript.sh hi $vUser $vP

E ainda sou solicitado duas vezes.

Então, minha pergunta é em três partes:

  1. Existe uma variável que eu possa usar para a senha, assim como existe uma para o usuário, $USER ?

  2. Existe uma maneira diferente de atribuir o valor resultante do comando que tenho em $vP ? Eu estou querendo saber se a execução do jeito que eu tenho, faz em uma sessão não iniciados e não a atual, já que estou recebendo alguns erros de tipo de aviso adicionais em algumas variáveis.

  3. Eu tentei usar o Zenity apenas para capturar o texto, mas é claro, eu não consegui passar esse valor para o sudo, então eu só podia usá-lo como um parâmetro, o que me coloca de volta em dois prompts. / p>

por semi-newbie 11.01.2011 / 02:11

3 respostas

2

Você pode atribuir determinados comandos para executar sem precisar fornecer uma senha com sudo ( man visudo ). Por exemplo, você pode ter uma linha como essa, se seu nome de usuário for psusi:

%psusi ALL = NOPASSWD: /usr/local/bin/myscript.sh

Tenha muito cuidado ao conceder acesso sudo confiável.

    
por user8290 11.01.2011 / 18:12
2

O programa que você está procurando é chamado de expect . Você escreve um script no qual você diz ao programa para esperar certos prompts (como prompts de senha) e então fornece alguma resposta via stdin, o mesmo que com a entrada do teclado. Eu usei isso no passado para contornar os pedidos de senha irritantes que eu não poderia (facilmente) se livrar.

sudo aptitude install expect
man expect
    
por Scott Severance 04.04.2011 / 19:25
1

1) Não, desde que isso daria sua senha para qualquer pessoa em seu sistema

2) O valor de retorno do gksudo é um inteiro indicando se houve um erro ou não. A opção -p faz com que imprima a senha em seu stdout.

3) Por que você está tentando obter a senha? Pule a primeira chamada para o gksudo e use o segundo.

    
por psusi 11.01.2011 / 03:36