sshとsudo:stdinを処理するsshスクリプトからsudoパスワードを要求する方法

sshとsudo:stdinを処理するsshスクリプトからsudoパスワードを要求する方法

ホストの標準入力を処理するSSHを介してリモートホストで実行されるスクリプトがあります。

スクリプトは同様のことを行います(単純化のため)。

cat $TARBALL | ssh $REMOTE 'tar -x -C -f - && reboot'

SSHユーザーとしてrootを使用すると正常に動作しますが、リモートにrootアクセス権がない場合は、sudoを使用してコマンドを実行したいと思います。たとえば、次のようになります。

cat $TARBALL | ssh $REMOTE 'sudo tar -x -C -f - && sudo reboot'

ここでは、ユーザーに対話的にパスワードを要求したいのですが、この場合、sudoはパスワードを取得できません。

ローカル端末からパスワードを要求するようにsudoにどのように指示できますか? -Aオプションを使用すると、この機能が有効になっているようですが、この場合、どのAskpassプログラムが必要かはわかりません。

答え1

標準入力でパスワードプロンプトを処理する必要がある場合に推奨されるUnixアプローチは、expect(1)この目的のために特別に設計されたツールを使用することです。

関連情報