27 lines
872 B
Python
27 lines
872 B
Python
import subprocess
|
|
from scripts.log import logger
|
|
|
|
|
|
@logger.catch
|
|
def run_cmd(cmd, shell=True, timeout=120):
|
|
'''
|
|
Run command with arguments, wait to complete and return ``True`` on success.
|
|
|
|
:param cls: The class as implicit first argument.
|
|
:param cmd: Command string to be executed.
|
|
:returns : ``True`` on success, otherwise ``None``.
|
|
:rtype : ``bool``
|
|
'''
|
|
logger.debug('Execute command: {0}'.format(cmd))
|
|
status = True
|
|
try:
|
|
out_bytes = subprocess.check_output(
|
|
cmd, shell=shell, stderr=subprocess.STDOUT, timeout=timeout)
|
|
except subprocess.CalledProcessError as e:
|
|
out_bytes = e.output # Output generated before error
|
|
code = e.returncode # Return code
|
|
logger.error(f"run {cmd} failed,out={out_bytes},code={code}")
|
|
status = False
|
|
|
|
return out_bytes, status
|