mirror of
https://github.com/Websoft9/websoft9.git
synced 2025-01-24 18:30:23 +08:00
79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
#!/usr/bin/python3
|
||
import os, io, sys, platform, shutil, time, subprocess, json, datetime
|
||
from api.utils.common_log import myLogger
|
||
|
||
# 执行Shell命令,处理报错和超时,并有返回值
|
||
def execute_Command(cmd_str, timeout=60, timeinner=3, retry=True):
|
||
print(cmd_str)
|
||
time_out = 0
|
||
status = False
|
||
|
||
while time_out < timeout:
|
||
out_str = subprocess.getstatusoutput(cmd_str)
|
||
print(out_str)
|
||
if out_str[0] == 0 and out_str[1].find('ERROR') == -1 and out_str[1].find('error') == -1:
|
||
status = True
|
||
print('\nExecute successfully')
|
||
break
|
||
elif retry:
|
||
print('\nTry again')
|
||
time.sleep(timeinner)
|
||
time_out = time_out + timeinner
|
||
else:
|
||
time_out = timeout
|
||
|
||
if not status:
|
||
print('\n此次任务执行有异常,请仔细排查')
|
||
|
||
# 执行Shell命令,处理报错和超时,并有返回值
|
||
def execute_CommandReturn(cmd_str, timeout=30, timeinner=3):
|
||
print(cmd_str)
|
||
time_out = 0
|
||
|
||
while time_out < timeout:
|
||
out_str = subprocess.getstatusoutput(cmd_str)
|
||
print(out_str)
|
||
if out_str[0] == 0 and out_str[1].find('ERROR') == -1 and out_str[1].find('error') == -1:
|
||
# 去掉\n和"
|
||
# 返回值是元组,不能修改,需要赋值给变量
|
||
temp_str = out_str[1]
|
||
temp_str = temp_str.strip('\n')
|
||
temp_str = temp_str.strip('"')
|
||
time_out = timeout
|
||
return temp_str
|
||
else:
|
||
time.sleep(timeinner)
|
||
time_out = time_out + timeinner
|
||
print('\n此次任务执行失败,请根据下面错误原因排查:')
|
||
print(out_str)
|
||
|
||
def execute_command_output(cmd_str):
|
||
print(cmd_str)
|
||
out_str = subprocess.getoutput(cmd_str)
|
||
print(out_str)
|
||
return out_str
|
||
|
||
# cmd_str: 执行的command命令 times:如果不成功的重复次数
|
||
def execute_command_output_all(cmd_str, max_time = 3):
|
||
|
||
myLogger.info_logger("Start to execute cmd: " + cmd_str)
|
||
execute_time = 0
|
||
while execute_time < max_time:
|
||
process = subprocess.run(cmd_str, shell=True, stdout=subprocess.PIPE, universal_newlines=True)
|
||
if process.returncode == 0:
|
||
return {"code": "0", "result": process.stdout,}
|
||
else:
|
||
execute_time = execute_time + 1
|
||
|
||
myLogger.warning_logger("Command execute failed Commend: " + cmd_str)
|
||
return {"code": "-1", "result": "command execute failed, please check your command!"}
|
||
|
||
def convert_command(cmd_str):
|
||
convert_cmd = ""
|
||
if cmd_str == "":
|
||
convert_cmd=cmd_str
|
||
else:
|
||
convert_cmd='echo "'+cmd_str+'" > /data/pipe/appmanage'
|
||
|
||
return convert_cmd
|