コンテンツにスキップ

Top

sudo のパスワード入力を手入力から自動に変える方法

$ sudo ls

とかした場合、当たり前だが入力プロンプトが出てパスワードを要求される。

でも手で入力せずにそのまま自動で進めてほしいケースもあるはず。

そんなとき、セキュアではないが、シェルスクリプト内にパスワードを直書きしておいて、それを読み込んで実行する方法について述べる。

パスワードをパイプ経由で渡す

以下のように、パスワードをパイプ経由で渡せば良い。
(一旦変数に格納しているが、1行なら変数に入れなくても直接で良い。何行もsudoがある場合はうざいので変数にしただけ)

$ vi hoge.sh

#!/bin/bash
PASSWORD=password
echo $PASSWORD | sudo -S ls
大事な点は -S オプションをつけること。これがないとだめ。

んで、実行。

$ chmod +x hoge.sh
$ ./hoge.sh
[sudo] user のパスワード: hoge.sh  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  ピクチャ  ミュージック  公開
sudoのパスワードを入力しなくてもlsの結果が表示された。

[sudo] user のパスワード: という入力プロンプトが標準出力してしまっているが、まぁ、実際にあなたが作るシェルは標準出力とか/dev/nullに捨てるだろうから(標準出力を見たいシェルならコンソールでとるんだからパスワードも打てやという話)なので問題ないだろう。

これでパスワードを要求されずにsudo実行できる!

以上!