Como executar um comando pedindo senha em segundo plano?

5

Eu quero executar um comando sudo apt-get update & . No entanto, depois de pressionar Enter, quando eu bati em jobs , ele mostra o status desses comandos como interrompidos. Meu palpite é que, ao colocar o processo em segundo plano, não forneci uma oportunidade para perguntar a senha. Existe uma maneira de executar um processo em segundo plano que requer uma senha?

    
por bubble 02.12.2012 / 17:29

5 respostas

2

Tente digitar sudo -i first end, em seguida, apt-get update & ou apenas executando o comando:

sudo -i && apt-get update &

Outra coisa que você pode tentar é o comando:

gksudo && sudo apt-get update &

Mas não tenho certeza se isso funcionará.

Ou você pode tentar adicionar seu usuário à lista de usuários que não precisam digitar uma senha ao usar o sudo.

Para isso, adicione o tipo sudo visudo no terminal. Em seguida, adicione a linha

%super_sudoers ALL=(ALL) NOPASSWD: ALL

Ou o que você quiser chamar o grupo (você pode alterar "super_sudoers") e depois adicionar seu usuário a esse grupo digitando

usermod -a -G super_sudoers yourusername (obviamente substituindo seu nome de usuário pelo seu nome de usuário)

e reinicie (ou talvez sair / entrar em obras, não tenho certeza) para encontrar você pode digitar comandos suo sem precisar digitar uma senha. Isso, é claro, significa que outras pessoas podem garantir que você sempre deixe seu computador bloqueado e não tenha o login automático ativado.

    
por Jamie Twells 02.12.2012 / 17:52
2

Primeiro de tudo, "Esta não é a melhor prática" .
Mas você pode usar o comando sudo -S

Sudo -S:
A opção -S (stdin) faz com que o sudo leia a senha da entrada padrão em vez do dispositivo terminal.

Então, vá até o terminal e digite:

echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &

ele executará o comando apt-get update sem solicitar uma senha e backgroud,
e irá redirecionar (anexar) o stdout e o stderr para um arquivo de log em sua casa chamado myaptupd.log , caso você possa verificar se está tudo certo com o comando apt-get update.

Fazer isso é um grande comando, você pode colocar este comando como um Alias no seu arquivo .bashrc. Por exemplo: No tipo de terminal:

gedit /home/user/.bashrc

Adicione esta linha ao final do arquivo

alias myaptupd='echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &'

Recarregue seu .bashrc
No terminal, vá para o seu diretório home apenas digite:

cd

Em seguida, digite:

source .bashrc

ou

. .bashrc

Agora, no terminal, basta digitar o alias como um comando:

myaptupd

Você pode verificar com o comando jobs o status.

Por outro lado, você pode criar um script bash e denominado myaptupd.sh
Por exemplo:

#! /bin/bash
echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &

Por segurança, você pode definir os perms para:

chmod 700 /path/to/the/myaptupd.sh

Depois, você pode chamar o script com:

 bash /path/to/the/myaptupd.sh

Ou crie um alias no seu .bashrc

alias myaptupd='bash /path/to/the/myaptupd.sh'

Recarregue seu .bashrc (como explicar antes) e você pode digitar o nome do alias para executar o script:

myaptupd

Espero que isso seja útil!

Atenciosamente.

    
por Roman Raguet 02.12.2012 / 19:38
1

A melhor e mais segura forma é:

su -c "sudo apt-get update &"

Você também pode enviar a saída para um arquivo de log:

su -c "sudo apt-get update > update.log &"
    
por Doomineer 31.07.2016 / 01:22
0

Tente:

xterm -e "sudo -b nohup php -S localhost:80 -t /media/malcolm/Workspace/sites &>/dev/null"

quando você fecha o xterm, o servidor web do php ainda está ativo,

Não coloque "nohup" antes de "sudo", senão o servidor web php será eliminado depois de fechar o xterm.

    
por diyism 14.03.2014 / 11:18
0

Adicionei o seguinte ao meu arquivo .bash_profile.

sudobg() {
  sudo echo "Password entered"
  sudo $@ &
}

Então eu posso simplesmente ligar:

prompt$ sudobg echo "Hello from the background."

E eu recebo:

Password:
Password entered
[1] 6773
prompt$ Hello from the background.

Disclaimer: Estou usando o bash mas não o Ubuntu. Pode haver locais melhores para essa definição de função.

    
por Peter Westmacott 09.01.2015 / 13:24