Да, вы можете обнаружить коды ошибок при использовании функции 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. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.