如何使用 python 子进程从 Linux 中仅提取 SUDO 版本

How to extract only SUDO version from Linux with python Subprocess

我只想从 Linux output 中提取 SUDO version。我有 command

sudo -V 2>/dev/null| grep "Sudo version" 2>/dev/null

我想用 Subprocess 我尝试了一些方法,但没有用。由于 Subprocess 需要 list 个参数,但我无法正确使用它。我们如何使用 Python?

使用 Subprocess 来做到这一点

使用subprocess.check_output.

>>> import subprocess
>>> subprocess.check_output("sudo --version", shell=True, stderr=subprocess.STDOUT, encoding="utf-8").splitlines()[0]
'Sudo version 1.8.31'
  • 需要标志 shell=True 才能通过您的 shell 解释命令行;否则你需要做 [shutil.which("sudo"), "--version"].
  • stderr=subprocess.STDOUT 将 sudo 的 stderr 输出重定向到 stdout,这就是 check_output 读取的内容。
  • encoding="utf-8" check_output 自动将字节输出解码为 UTF-8。
  • .splitlines()[0] 将输出拆分为多行并获取第一行。如果您的 sudo 实现没有在第一行打印版本,您需要对其进行调整。