Script Bash para 'apt-get update' com senha de inserção automática [duplicado]

2

Eu quero fazer com que o shell script inicie sudo apt-get update , insira automaticamente a senha para sudo e pressione a tecla enter automaticamente.

Eu tentei:

#!/bin/bash
sudo apt-get update
expect "[sudo] password for username: "
send "password"
    
por Edward 02.03.2017 / 11:13

2 respostas

3

Você pode fazer com

#!/bin/bash
echo password | sudo -S apt-get update

De man sudo e de Stackoverflow

  

-S , --stdin                    Escreva o prompt para o erro padrão e leia a senha                    da entrada padrão, em vez de usar o dispositivo terminal.                    A senha deve ser seguida por um caractere de nova linha.

Se a sua senha tiver caracteres especiais, use aspas simples em torno da senha, como echo 'p@ssowrd' .

    
por d a i s y 02.03.2017 / 11:30
1

Você tem a ideia certa, usando expect é a ferramenta certa. No entanto, sua sintaxe está errada. Tente o seguinte:

#!/bin/bash

#some instructions ....

#the <<-EOD ... EOD syntax is called a "heredoc" and allows to send multiple instructions to a command
expect <<-EOD
    #process we monitor
    spawn sudo apt-get update
    #when the monitored process displays the string "[sudo] password for username:" ...
    expect "[sudo] password for username:"
    #... we send it the string "password" followed by the enter key ("\r") 
    send "password\r"
#we exit our expect block
EOD
    
por Aserre 02.03.2017 / 11:28