sudo のパスワード入力を手入力から自動に変える方法
$ sudo ls
とかした場合、当たり前だが入力プロンプトが出てパスワードを要求される。
でも手で入力せずにそのまま自動で進めてほしいケースもあるはず。
そんなとき、セキュアではないが、シェルスクリプト内にパスワードを直書きしておいて、それを読み込んで実行する方法について述べる。
パスワードをパイプ経由で渡す
以下のように、パスワードをパイプ経由で渡せば良い。
(一旦変数に格納しているが、1行なら変数に入れなくても直接で良い。何行もsudoがある場合はうざいので変数にしただけ)
$ vi hoge.sh
#!/bin/bash
PASSWORD=password
echo $PASSWORD | sudo -S ls
んで、実行。
$ chmod +x hoge.sh
$ ./hoge.sh
[sudo] user のパスワード: hoge.sh ダウンロード テンプレート デスクトップ ドキュメント ビデオ ピクチャ ミュージック 公開
[sudo] user のパスワード:
という入力プロンプトが標準出力してしまっているが、まぁ、実際にあなたが作るシェルは標準出力とか/dev/nullに捨てるだろうから(標準出力を見たいシェルならコンソールでとるんだからパスワードも打てやという話)なので問題ないだろう。
これでパスワードを要求されずにsudo実行できる!
以上!