web-dev-qa-db-fra.com

Script Bash pour 'apt-get update' avec un mot de passe automatiquement inséré

Je veux que make Shell script démarre Sudo apt-get update, insère automatiquement le mot de passe pour Sudo et appuie automatiquement sur la touche Entrée.

J'ai essayé:

#!/bin/bash
Sudo apt-get update
expect "[Sudo] password for username: "
send "password"
2
Edward

Vous pouvez faire avec

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

De man Sudo et de Stackoverflow

-S, --stdin Ecrivez l'invite sur l'erreur standard et lisez le mot de passe depuis l'entrée standard au lieu d'utiliser le terminal. Le mot de passe doit être suivi d'un caractère de nouvelle ligne.

Si votre mot de passe comporte des caractères spéciaux, utilisez des guillemets simples autour du mot de passe, comme echo 'p@ssowrd'.

3
d a i s y

Vous avez la bonne idée, utiliser expect est le bon outil. Cependant, votre syntaxe est fausse. Essayez ce qui suit:

#!/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
1
Aserre