このエントリーをはてなブックマークに追加


sudoコマンドのパスワードを自動的に入力する方法]

sudoコマンドで管理者権限が必要なコマンドを実行するとき、パスワードの入力が求められますよね。
パスワード入力を自動的にしてくれるサンプルスクリプトを以下に記します。

関連記事

パスワードをsudoコマンドに渡す方法

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でパスワード入力を求められる操作を自動化する方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-21 (水) 21:19:00