首页 > 解决方案 > 将输出输出到 python 容器并在值上运行命令

问题描述

我想知道是否有人可以帮助我尝试构建一个脚本,以便我可以监控我的硬盘驱动器。我想做的是使用 smartmontools 来获取我需要的所有数据。

我正在尝试构建的是:

驱动器扫描仪

Scan_of_Drives = os.system('cmd /k smartctl --scan')
print Scan_of_Drives

我得到这个输出:

/dev/sda -d ata # /dev/sda, ATA device
/dev/csmi0,0 -d ata # /dev/csmi0,0, ATA device

现在我正在尝试获取值“sda”和“csmi”(请注意,如果还有更多驱动器我也需要它们)并将其存储在一个容器中,以便我可以使用我的下一个代码运行它。

这是:( os.system('cmd /k smartctl -x sda')等等等等)

然后将该数据存储到一个名为“ sda_data”的容器中

如果这超出了问题的标准,我很抱歉,但我已经尝试了大约四个星期,而且我对 python 非常陌生,这也对我不利。

我将不胜感激任何建议或网站链接以帮助我解决此问题。

标签: pythondrive

解决方案


你不能做任何事情,os.system因为它在一个子shell中执行命令而不让你访问很多东西,你可以从它的返回值知道命令是成功还是失败。

您想要的是subprocess更加灵活,除此之外,您还可以检索命令生成的文本(打印到标准输出)。在这里,您正在寻找的是subprocess.check_call(或 Python 3 上的参数的正确组合,subprocess.run尽管情况似乎并非如此)。

这样,您将获得作为字符串的结果输出,您可以对其进行切片和切块以检索您需要的任何信息。

另一种方法是使用 pySMART 之类的东西它包装 smartctl 并为您进行解析,为您正在寻找的内容提供直接的编程 API。


推荐阅读