我正在尝试使用 Paramiko 编写部署脚本,但我在运行命令的退出代码时遇到了问题。我正在使用与此答案中的代码类似的代码,但它有点复杂。基本上,从我们的开发盒中,我们必须经过一个跳转服务器,然后从那里到一系列生产机器。在那里,我们必须切换到系统用户(sudo su - systemuser),然后我们才能运行命令。
问题是,据我了解,我有 3 个子外壳 - ssh 会话、嵌套的 ssh 命令,然后是 su 子外壳。我无法让 Paramiko 将内部子 shell 中命令的退出代码返回给我——我猜它最终返回的退出代码将是 ssh 命令的退出代码。我怀疑这个问题实际上并不是 Paramiko 特有的——SSH 协议甚至支持这种用法吗?
我目前一直在执行:
(my command); echo "Process terminated with exit code $?"
然后在客户端上解析它,但它非常难看 - 有更好的方法吗?