1

corosync クラスターのテストに取り組んでいます。リソースがPythonを使用して別のノードに確実に移行されるように、フローティングIPを持つインターフェイスを失敗させようとしています。

ここでのジレンマは、私のコマンドがリモート マシン上で実行されることですが、テスト コードが応答を待って永遠にハングし、失敗が挿入されたためにノードが再起動されることです。

ssh = SSHClient(self.get_ms_ip(ms),
                        self.get_ms_user(ms),
                        self.get_ms_password(ms))
ssh.connect()
self.logger.info("Failing FIP eth now on %s" % ms)
ssh.exec_command(cmd, timeout=1)
#Code never reached this comment.

Pythonでは、コマンドを送信して、戻りを待たずに続行するにはどうすればよいですか? ここで提案されているように、ssh.exec_commandをsubprocess.Popenでラップしようとしましたが、プロセスを実行して待機しないでくださいが、何も違いはありませんでした。

4

3 に答える 3

2

サブプロセスは必要ありません。スレッドが必要です。呼び出しを実行するスレッドをexec_command生成すると、コードを続行できるようになります。

于 2014-11-29T06:18:27.227 に答える
0

試しましたnohupか?

ssh.exec_command('nohup %s &'%cmd, timeout=1)
于 2014-11-29T06:21:41.703 に答える