温馨提示×

python外部命令如何记录命令执行日志

小樊
82
2024-12-12 01:02:38
栏目: 编程语言

要在Python中记录外部命令的执行日志,您可以使用subprocess模块来运行外部命令,并使用logging模块来记录输出和错误信息。以下是一个示例代码:

import subprocess
import logging

# 配置日志记录
logging.basicConfig(filename='command_execution.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 要执行的外部命令
command = 'echo "Hello, World!"'

# 使用subprocess.run()运行外部命令,并捕获输出和错误信息
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)

# 记录命令执行结果
if result.returncode == 0:
    logging.info(f'Command executed successfully: {command}\nOutput: {result.stdout}')
else:
    logging.error(f'Command execution failed: {command}\nError: {result.stderr}')

在这个示例中,我们首先配置了日志记录,将日志信息写入名为command_execution.log的文件中。然后,我们使用subprocess.run()函数运行外部命令,并通过设置stdoutstderr参数来捕获命令的输出和错误信息。最后,我们根据命令的执行结果记录相应的日志信息。

请注意,使用shell=True可能会导致安全风险,特别是在处理不受信任的输入时。在这种情况下,建议避免使用shell=True,并通过传递命令及其参数作为列表来运行外部命令。例如:

command = ['echo', 'Hello, World!']
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

0