Paramikoを使用してデプロイメントスクリプトを作成しようとしていますが、実行するコマンドの終了コードに問題があります。この回答と同様のコードを使用していますが、もう少し複雑です。基本的に、開発ボックスからジャンプサーバーを経由し、そこから一連の本番マシンに移動する必要があります。そこで、システムユーザー(sudo su --systemuser)に切り替える必要があり、コマンドを実行できます。
問題は、私が理解しているように、sshセッション、ネストされたsshコマンド、そしてsuサブシェルの3つのサブシェルがあることです。Paramikoに内部サブシェルのコマンドの終了コードを返してもらうことができません-最終的に返される終了コードはsshコマンドの終了コードになると思います。この問題は実際にはParamikoに固有のものではないと思います-SSHプロトコルはこの種の使用法もサポートしていますか?
私は現在常に実行しています:
(my command); echo "Process terminated with exit code $?"
次に、これをクライアントで解析しますが、かなり醜いです-より良い方法はありますか?