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"
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'
.
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