0

sudoroot 権限を持つホストの ssh/scp に依存する一連の bash スクリプトがあります。

そのため、pexpectを使用して、キーを保存するために yes と答え、ホストが ssh で使用可能ですべてが OK の場合に true を返すなど、ホストの ssh のすべての核心を処理する python スクリプトsshOKを作成しました。

ただし、sudo が bash スクリプト内で呼び出されたときに 5 分ごとに 1 回ではなく、python pexpect.spawn 内で sudo を使用して毎回パスワードを求められます。

何か電話する方法はありますか

child=pexpect.spawn('sudo ssh somehost', Pty=get_parent_pty())

または、 sshOKを実行しているシェルを作成するpython スクリプトsshOK内で、その承認を覚えていますか? 私がsudoについてRTFMしたことから、pexpect呼び出しは、資格情報などを継承するために疑似端末を共有する必要があります。望ましい動作は次のとおりです。

[foo@bar bin]$ sshOK somehost
[sudo] password for foo:
Try ssh            on somehost   testing connection              [--OK--]
[foo@bar bin]$ sshOK somehost
Try ssh            on somehost   testing connection              [--OK--]
[foo@bar bin]$

そしてそうではない

[foo@bar bin]$ sshOK somehost
[sudo] password for foo:
Try ssh            on somehost   testing connection              [--OK--]
[foo@bar bin]$ sshOK somehost
[sudo] password for foo:
Try ssh            on somehost   testing connection              [--OK--]
[foo@bar bin]$

目標は、後で bash スクリプトをより多くの python と pexpect に置き換えることですが、現時点でのハードルは、パスワードを入力しなくても同じスクリプトを複数回呼び出せるようにすることです。

別の方法は、pexpect を使用する部分を別のスクリプトに抽出し、そのスクリプトを sudoers に追加して、スクリプト全体を昇格させて実行することです。すべてのユーザーに ssh キーを追加することはオプションではありません。

4

1 に答える 1

1

どうやら正解は…

番号

すべての通信は、別々の完全に切り離された [pt]ty で行われます。資格情報は転送できず、pexpect によって作成された pty は、スクリプトが実行されている tty にリンクできません。

于 2013-05-16T13:36:02.877 に答える