代码拉取完成,页面将自动刷新
#!/usr/bin/python3
# ******************************************************************************
# Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
# licensed under the Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
# PURPOSE.
# See the Mulan PSL v2 for more details.
# ******************************************************************************/
import logging
import shlex
import subprocess
from typing import Tuple
SUCCESS = "Succeed"
FAIL = "failed"
class CommandExitCode:
SUCCEED = 0
FAIL = 255
class TaskExecuteRes:
SUCCEED = "succeed"
FAIL = "fail"
def execute_shell_command(command: str, **kwargs) -> Tuple[int, str, str]:
"""
execute shell commands
Args:
command(str): shell command which needs to execute
**kwargs: keyword arguments, it is used to create Popen object.supported options: env, cwd, bufsize, group and
so on. you can see more options information in annotation of Popen obejct.
Returns:
Tuple[int, str, str]
a tuple containing three elements (return code, standard output, standard error).
Example usage:
>>> return_code, stdout, stderr = execute_shell_command("ls -al|wc -l", **{"env": {"LANG": "en_US.utf-8"}})
>>> print(return_code, stdout, stderr)
0, 42, ""
"""
commands = command.split('|')
process = None
stdout_data = ""
stderr_data = ""
try:
for index, cmd in enumerate(commands):
cmd_list = shlex.split(cmd)
if index == 0:
process = subprocess.Popen(
cmd_list,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
encoding='utf-8',
**kwargs,
)
else:
process = subprocess.Popen(
cmd_list,
stdin=process.stdout,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding='utf-8',
**kwargs,
)
stdout, stderr = process.communicate()
stderr_data += stderr
stdout_data += stdout
return process.returncode, stdout_data.strip(), stderr_data.strip()
except Exception as error:
logging.error(error)
return CommandExitCode.FAIL, stdout_data, str(error)
if __name__ == '__main__':
cmd = "sudo cp -r \'/home/wgg/project/auto_hotpatch/patch_files/CVE-2023-51042/openEuler-20.03-LTS-SP1/*\' \'/home/wgg/project/auto_hotpatch/remote_test_files/openEuler-20.03-LTS-SP1/CVE-2023-51042\'"
result = execute_shell_command(cmd)
print(result)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。