「sudo」でファイルからパスワードを取得する方法は?


12

sudoパスワードを要求するコマンドを実行したい:

sudo apt-get update

これは機能するはずではありません(私は通常のテキストファイルにパスワードを保存しましたpasswd.txt):

sudo apt-get update <~/passwd.txt

これがなぜ機能する必要があるかについての私のロジックです。パスワードが必要な場合、ユーザーはキーボードからパスワードを入力するように求められます。しかしstdinpasswd.txtファイルから読み取るようにリダイレクトすることはうまくいくはずです。

いいんじゃない?



このexpectようなことを自動化するには、通常はtclスクリプトを使用します。
アドビ

これを尋ねる必要がある場合、おそらく何か間違ったことをしているでしょう。最初に達成しようとしていることを共有できますか?このようなハックを使用する必要はありません。より良い解決策があるはずです。
gertvdijk

@gertvdijk私はubuntuの専門家ではありませんが、勉強しています。これを演習として自分に与えました。「現在所有している知識のみを使用してsudo特権を必要とするBashスクリプトでコマンドを実行します。Googleを使用せずに。」上記の答えを思いつき、それがうまくいくと思った。後でAskUbuntuでより良い、より安全なソリューションを見つけました。
MichaelB

回答:


26

sudostdinデフォルトではパスワードを読み取りません。sudoマンページから:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

だからあなたは実行する必要があります:

sudo -S apt-get update <~/passwd.txt

ファイルにパスワードを保存することはお勧めできません。あなたは読むべきです:


わかった!短いn甘い答え!
MichaelB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.