python

python sudo命令如何进行日志审计

小樊
83
2024-12-12 02:34:41
栏目: 编程语言

在Python中,你可以使用subprocess模块来执行带有sudo权限的命令并捕获输出

import subprocess
import shlex
import os

def sudo_command(command, user='your_username', password=None):
    # 将命令拆分为参数列表
    args = shlex.split(command)

    # 如果需要提供密码,可以使用pexpect库
    if password:
        import pexpect
        child = pexpect.spawn(f'sudo -u {user} {command}', timeout=10)
        index = child.expect(['password:', 'Permission denied', pexpect.EOF])

        if index == 0:
            child.sendline(password)
            child.expect(pexpect.EOF)
        elif index == 1:
            print("Permission denied")
            return None
    else:
        # 如果不需要提供密码,可以直接使用subprocess模块
        child = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    # 获取命令输出
    output, error = child.communicate()

    # 检查命令是否成功执行
    if child.returncode == 0:
        return output.decode('utf-8')
    else:
        print(f"Error: {error.decode('utf-8')}")
        return None

# 示例
command = "ls -l /root"
output = sudo_command(command)
if output:
    print(output)
else:
    print("Command execution failed")

请注意,将用户名和密码直接写入代码是不安全的。在实际应用中,你可以考虑使用更安全的方法,例如使用SSH密钥对进行身份验证。此外,根据你的需求,你还可以将日志审计功能集成到你的应用程序中,以便在需要时记录命令执行过程和结果。

0
看了该问题的人还看了