いくつかの ssh-copy-id プロセスを生成する必要がある Python スクリプトを実行しています。これらのプロセスではパスワードを入力する必要があるため、PExpect を使用しています。
私は基本的にこれを持っています:
child = pexpect.spawn('command')
child.expect('password:')
child.sendline('the password')
そして、別のプロセスを生成したいのですが、終了したかどうかに関係なく、これはもう気にしません。
child = pexpect.spawn('command2')
child.expect('password:')
child.sendline('the password')
そして、コードは2番目の「スポーン」でぶら下がっています
ただし、最初の呼び出しをコメントアウトすると、2 番目の呼び出しが機能するため、最初の呼び出しがまだ実行されているか、何かが機能していないという事実を推測しています。
さて、私ができなかったもう1つのことは、最初のものが停止するまで待つことです. 私は試しまし
た
:
child.terminate() - ハングします (パラメーターとして True と False の両方を使用)
何が起こっているのかについてのアイデアはありますか?
注: 私は Python の専門家ではなく、これまで pexpect を使用したことがないため、どんなアイデアでも大歓迎です。
ありがとう!
更新: これは間違いなく ssh-copy-id に関連しています。他のプロセスでは、返されなくても spawn がうまく機能するためです。また、明らかに ssh-copy-id は決して EOF を返しません。