shell_execute.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/python3
  2. import os, io, sys, platform, shutil, time, subprocess, json, datetime
  3. from api.utils.common_log import myLogger
  4. from api.exception.command_exception import CommandException
  5. from api.utils import const
  6. def execute_command_output(cmd_str):
  7. print(cmd_str)
  8. out_str = subprocess.getoutput(cmd_str)
  9. print(out_str)
  10. return out_str
  11. # cmd_str: 执行的command命令
  12. def execute_command_output_all(cmd_str):
  13. myLogger.info_logger("Start to execute cmd: " + cmd_str)
  14. process = subprocess.run(f'nsenter -m -u -i -n -p -t 1 sh -c "{cmd_str}"', capture_output=True, check=False, text=True, shell=True)
  15. if process.returncode == 0 and 'Fail' not in process.stdout and 'fail' not in process.stdout and 'Error' not in process.stdout and 'error' not in process.stdout:
  16. return {"code": "0", "result": process.stdout,}
  17. else:
  18. myLogger.info_logger("Failed to execute cmd, output failed result")
  19. myLogger.info_logger(process)
  20. raise CommandException(const.ERROR_SERVER_COMMAND,"Docker returns the original error", str(process))
  21. def convert_command(cmd_str):
  22. convert_cmd = ""
  23. if cmd_str == "":
  24. convert_cmd=cmd_str
  25. else:
  26. convert_cmd="nsenter -m -u -i -n -p -t 1 sh -c " + "'"+cmd_str+"'"
  27. return convert_cmd