Bash скрипт для 'apt-get update' с автоматической вставкой пароля [duplicate]

На этот вопрос уже есть ответ здесь:

Я хочу сделать shell-скрипт, который будет запускать sudo apt-get update, автоматически вводить пароль для sudo и автоматически нажимать клавишу Enter.

Я пробовал:

#!/bin/bash
sudo apt-get update
expect "[sudo] password for username: "
send "password"
2
задан 4 March 2017 в 15:21

2 ответа

Можно сделать с

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

От man sudo и от Stackoverflow

-S, --stdin Запись подсказка к стандартной погрешности и считать пароль из стандартного входа вместо того, чтобы использовать оконечное устройство. Пароль должен сопровождаться символом новой строки.

, Если Ваш пароль имеет специальные символы затем, используют одинарные кавычки вокруг пароля как echo 'p@ssowrd'.

3
ответ дан 2 December 2019 в 02:15

Вы получили верную мысль, использование expect является правильным инструментом. Однако Ваш синтаксис является неправильным. Попробуйте следующее:

#!/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
ответ дан 2 December 2019 в 02:15

Другие вопросы по тегам:

Похожие вопросы: