パスワードを要求するSudo su -<someuser>
のシェルスクリプトで自動化する必要がありました。
IBMAIXサーバーのシェルスクリプトでSudosuに直接パスワードを提供する方法。 echo <password> | Sudo su -<someuser>
を使用してみましたが機能しませんでした。親切にこれを手伝ってください。
-S
を使用します
man Sudo
:
-S、-stdinプロンプトを標準エラーに書き込み、端末デバイスを使用する代わりに、標準入力からパスワードを読み取ります。パスワードの後には改行文字を続ける必要があります。
使用できるように:
echo <myPassword> | Sudo -S su <someuser>
編集:上記はUbuntuのテストでは機能しませんでした。 2番目のコマンド「su」は、パスワードの照会を求めた後に高速化するようです。
エコーされたパスワードを入力できるように1秒待つという回避策を実行しました。その後、2番目のSudoがSudo su - foobar
を実行できるようになります。
echo "password" | Sudo -S sleep 1 && Sudo su - foobar
expect
を使用します。 stubコマンドは次のようになります。
expect -c '
log_user 0
spawn /usr/bin/Sudo su - someuser
expect "*: "
send "thepassword\n"
interact
'
同様の質問については この回答 を参照してください。
別のアプローチはSudo -A
。
pass
などのファイルを作成します。chmod go-rwx pass
。chmod u+x pass
ファイルを編集して、パスワードを出力するスクリプトにします。
#!/bin/sh
printf '%s\n' 'yourpassword'
今、あなたはこれを行うことができます:
Sudo_ASKPASS="./pass" Sudo -A su - someuser
注:この場合、Sudo
のパスワードを指定します(su
のパスワードではありません)。 Sudo
が必要なものを使用します。
Sudoの_:NOPASSWD
_オプションを使用できるので、パスワードは必要ありません。例:/ etc/sudoersの%wheel ALL=(ALL) NOPASSWD: ALL