Я пытаюсь использовать Paramiko для написания сценария развертывания, и у меня возникают проблемы с кодами выхода из команд, которые я запускаю. Я использую код, аналогичный тому, что использовался в этот ответ, но это немного сложнее. По сути, из наших ящиков для разработчиков мы должны пройти через сервер перехода, а оттуда - на серию производственных машин. Оказавшись там, мы должны переключиться на системного пользователя (sudo su - systemuser), а затем мы можем запускать команды.
Проблема в том, что, насколько я понимаю, у меня есть 3 подоболочки - сеанс ssh, вложенная команда ssh и затем подоболочка su. Я не могу заставить Paramiko вернуть мне код выхода команд во внутренней подоболочке - я предполагаю, что код выхода, который он в конечном итоге вернет, будет кодом команды ssh. Я подозреваю, что эта проблема на самом деле не специфична для Paramiko - поддерживает ли протокол SSH такое использование?
В настоящее время я всегда выполняю:
(my command); echo "Process terminated with exit code $?"
а затем разобрать это на клиенте, но это довольно некрасиво - есть ли способ лучше?