Да, вы можете обнаружить коды ошибок при использовании функции run()Fabric для выполнения команд в удаленной оболочке. Fabric предоставляет несколько методов для обработки ошибок и получения кодов завершения выполненных команд.
Вот несколько методов, которые вы можете использовать:
-
Использование функции
ok():from fabric import Connection with Connection('your_server') as conn: result = conn.run('your_command', warn=True) if result.ok: print("Command executed successfully.") else: print("Command failed with exit code:", result.exited)В приведенном выше примере параметр
warn=Trueпозволяет функцииrun()продолжить выполнение, даже если команда завершается с ненулевым статусом. Затем функциюok()можно использовать для проверки успешности команды или нет. Атрибутexitedобъектаresultпредоставляет код завершения команды. -
Использование атрибута
failed:from fabric import Connection with Connection('your_server') as conn: result = conn.run('your_command', warn=True) if result.failed: print("Command failed with exit code:", result.exited) else: print("Command executed successfully.")В этом методе проверяется атрибут
failedобъектаresult, чтобы определить, завершилась ли команда неудачно или нет. Если этоTrue, команда не выполнена, а атрибутexitпредоставляет код выхода. -
Использование обработки исключений:
from fabric import Connection from fabric.exceptions import CommandFailed with Connection('your_server') as conn: try: result = conn.run('your_command', warn=True) print("Command executed successfully.") except CommandFailed as e: print("Command failed with exit code:", e.result.exited)Fabric предоставляет исключение
CommandFailed, которое можно перехватить для обработки сбоев команд. Атрибутexitedобъектаresultв исключении предоставляет код выхода.
Это всего лишь несколько методов обработки кодов ошибок при использовании функции run()Fabric. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.