sudoコマンドで管理者権限が必要なコマンドを実行するとき、パスワードの入力が求められますよね。
パスワード入力を自動的にしてくれるサンプルスクリプトを以下に記します。
echoコマンドを使用することにより、簡単に実現することができます。
以下の実行例は、管理者権限が必要な fdisk コマンドで試してみます。
$ fdisk -l fdisk: /dev/sda を open できません: 許可がありません fdisk: /dev/sdb を open できません: 許可がありません
$ 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でパスワード入力を求められる操作を自動化する方法でした。