首页 > 解决方案 > 如果安装了 coreutils 8.24 或更高版本,如何在 Python 中查找?

问题描述

coreutils 8.24 有一个监控 dd 进度的功能

(另见: https ://askubuntu.com/questions/215505/how-do-you-monitor-the-progress-of-dd/539305 )

这意味着,我可以调用 shell 突击队,例如

dd if=/dev/urandom of=/dev/null status=progress

在执行上述指定命令时,如何确保在主机系统上安装了正确的 coreutils 版本?

由于这条线是 Python 应用程序的一部分,可能在不同的发行版上运行,因此使用包管理器进行验证并不是最好的方法。此外,我们无法使用which命令验证已安装库的存在。

标签: pythonlinux

解决方案


您可以调用subprocess.check_output因为dd提供了一个--version标志来输出它的版本:

import subprocess

m = subprocess.check_output(["dd", "--version"])
ver_line = m.split('\n')[0]
ver = ver_line.split(' ')
msg = 'dd status=progress does not work'
if float(ver[2]) >= 8.24:
    msg = 'dd status=progress works'
print msg

可能是一个足够好的版本检查。

我不认为您的示例dd命令是您真正想要的。


推荐阅读