#author("2018-02-21T21:19:00+09:00","","")
#navi(../)
* sudoコマンドのパスワードを自動的に入力する方法] [#pa634a6f]
sudoコマンドで管理者権限が必要なコマンドを実行するとき、パスワードの入力が求められますよね。~
パスワード入力を自動的にしてくれるサンプルスクリプトを以下に記します。

#contents

* 関連記事 [#dca58176]
-[[sudoでリダイレクトや複数のコマンドを実行したい場合の記述方法>逆引きUNIXコマンド/sudoでリダイレクトや複数のコマンドを実行したい場合の記述方法]]
-[[Debian/一般ユーザーをsudoコマンドにて管理者として動作するようにする設定]]
-[[Ubuntu/Ubuntu Serverで管理者権限があるユーザーを追加する手順]]
-[[Ubuntu/追加済み一般ユーザーを管理者権限に変更する方法・GUI編]]
-[[Ubuntu/追加済み一般ユーザーを管理者権限に変更する方法・CUI編]]
-[[Ubuntu/Ubuntuでrootになる方法]]

* パスワードをsudoコマンドに渡す方法 [#q543660d]
echoコマンドを使用することにより、簡単に実現することができます。~
以下の実行例は、管理者権限が必要な fdisk コマンドで試してみます。
- 管理者権限(sudoをつけていないので)エラーとなります。
 $ fdisk -l
 fdisk: /dev/sda を open できません: 許可がありません
 fdisk: /dev/sdb を open できません: 許可がありません

- echo $PASSWORD で実行してみる
sudoコマンドに-Sオプションをつけます。~
オプションの意味は以下の通りです。
 $ man sudo
 <snip>
   -S          -S (stdin) オプションを指定すると、 sudo はパスワードをターミナルデバイスからではなく、
               標準入力から読み込む。パスワードは末尾に改行を付けなければならない。
実際に実行してみます。
 $ PASSWORD=password
 $ echo $PASSWORD | sudo -S fdisk -l
 
 Disk /dev/sda: 29.8 GiB, 32019111936 bytes, 62537328 sectors
 Units: sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disklabel type: dos
 Disk identifier: 0xe73e7111
 
 デバイス   起動    Start 最後から セクタ  Size Id タイプ
 /dev/sda1  *        2048 58361855 58359808 27.8G 83 Linux
 /dev/sda2       58363902 62535679  4171778    2G  5 拡張領域
 /dev/sda5       58363904 62535679  4171776    2G 82 Linux スワップ / Solaris
 <省略> 


まとめますと、以下のような構文となります。
 echo パスワード | sudo -S コマンド
出力が不要の場合は
 echo パスワード | sudo -S コマンド > /dev/null 2>&1

以上、sudoでパスワード入力を求められる操作を自動化する方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS