Автоматически вводить пароль при запуске bash script

Например, скажем, если у меня есть script, говорящий:

#!/bin/bash
sudo setpci -s 00:02.0 F4.B=00

Как поместить пароль root в script, чтобы он принимал его как пароль при чтении и выполнении строки sudo (поэтому мне не нужно вводить его вручную)?

Ответ 1

Порождение сеанса expect в вашем bash script обычно заключается в том, как вы автоматизируете интерактивные подсказки.

например.

expect -c "
spawn sudo setpci -s 00:02.0 F4.B=00
expect -nocase \"password:\" {send \"$PASS\r\"; interact}
"

Обратите внимание, что это не рекомендуемый подход в этом случае, поскольку это отверстие безопасности огромная для хранения вашего корневого пароля в bash script.

Правильным решением было бы изменить ваш /etc/sudoers/, чтобы не запрашивать пароль для этого двоичного файла.

#in /etc/sudoers
neohexane ALL=(ALL) NOPASSWD : /usr/bin/setpci