web-dev-qa-db-ja.com

パスワードを自動挿入する「apt-get update」のBashスクリプト

シェルスクリプトでSudo apt-get updateを開始し、Sudoのパスワードを自動的に挿入し、Enterキーを自動的に押すようにします。

私はもう試した:

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

あなたができる

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

man Sudoおよび Stackoverflow から

-S--stdinプロンプトを標準エラーに書き込み、端末デバイスを使用する代わりに標準入力からパスワードを読み取ります。パスワードの後に​​は改行文字が必要です。

パスワードに特殊文字が含まれている場合は、echo 'p@ssowrd'のようにパスワードを単一引用符で囲みます。

3
d a i s y

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
Aserre