smart-ctl包装器(smartmontools)
pySMART的Python项目详细描述
版权所有(c)2015 Marc Herndon
pysmart是一个简单的python包装器,用于 smartmontools。它正式兼容Linux、Windows和FreeBSD, 只要smartctl在系统路径上。行使管理权 强烈建议使用,因为smartctl无法准确检测所有设备类型 或者在没有这些权限的情况下解析所有智能信息。
仅使用设备名(即/dev/sda,pd0),包将创建 Device对象,填充了与此相关的所有信息 装置。然后可以使用文档化的api来查询这个对象 信息、启动自检和执行其他功能。
用法
使用pysmart的最常见方法是创建 要使用的物理存储设备,如图所示:
>>> from pySMART import Device >>> sda = Device('/dev/sda') >>> sda <SATA device on /dev/sda mod:WDC WD5000AAKS-60Z1A0 sn:WD-WCAWFxxxxxxx>
Device类成员可以直接访问,并且有许多helper方法 提供以批量检索信息。下面是一些示例:
>>> sda.assessment # Query the SMART self-assessment 'PASS' >>> sda.attributes[9] # Query a single SMART attribute <SMART Attribute 'Power_On_Hours' 068/000 raw:23644> >>> sda.all_attributes() # Print the entire SMART attribute table ID# ATTRIBUTE_NAME CUR WST THR TYPE UPDATED WHEN_FAIL RAW 1 Raw_Read_Error_Rate 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 141 140 021 Pre-fail Always - 3908 4 Start_Stop_Count 098 098 000 Old_age Always - 2690 5 Reallocated_Sector_Ct 200 200 140 Pre-fail Always - 0 ... # Edited for brevity 199 UDMA_CRC_Error_Count 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 200 200 000 Old_age Offline - 0 >>> sda.tests[0] # Query the most recent self-test result <SMART Self-test [Short offline|Completed without error] hrs:23734 LBA:-> >>> sda.all_selftests() # Print the entire self-test log ID Test_Description Status Left Hours 1st_Error@LBA 1 Short offline Completed without error 00% 23734 - 2 Short offline Completed without error 00% 23734 - ... # Edited for brevity 7 Short offline Completed without error 00% 23726 - 8 Short offline Completed without error 00% 1 -
或者,包提供一个DeviceList类。当实例化时, 这将自动检测所有本地存储设备并创建一个包含 每个检测到的存储设备有一个Device对象:
>>> from pySMART import DeviceList >>> devlist = DeviceList() >>> devlist <DeviceList contents: <SAT device on /dev/sdb mod:WDC WD20EADS-00R6B0 sn:WD-WCAVYxxxxxxx> <SAT device on /dev/sdc mod:WDC WD20EADS-00S2B0 sn:WD-WCAVYxxxxxxx> <CSMI device on /dev/csmi0,0 mod:WDC WD5000AAKS-60Z1A0 sn:WD-WCAWFxxxxxxx> > >>> devlist.devices[0].attributes[5] # Access Device data as above <SMART Attribute 'Reallocated_Sector_Ct' 173/140 raw:214>
使用pysmart包装器,可以快速开发python应用程序 SmartMontools强大功能的优势。
安装
pySMART在pypi上可用,可通过pip:
安装python -m pip install pySMART
唯一的外部依赖项是smartmontools的smartctl组件 包裹。这应该预先安装在大多数linux发行版中,或者 可以通过您的包管理器获得。可能是以下情况之一:
apt-get install smartmontools or yum install smartmontools
在Windows PC上,必须下载并安装SmartMontools。最新的 版本可以从项目的主页http://www.smartmontools.org/获得。
注意,在windows上安装smartmontools之后,包含 smartctl.exe必须添加到系统路径(如果尚未添加)。
文档
pySMART的api文档是使用pdoc生成的,可以是 在包存档中的/docs文件夹中找到。
致谢
我要感谢SmartMontools背后的整个团队, 维护这么好的产品。
我要特别感谢christian franke,他维护了windows端口 软件的。几年来,我编写的windows批处理文件 依靠smartctl.exe自动评估和测试 存储设备。如果没有他的工作,我的工作将会 更悲惨。:)
此外,我还要感谢ixsystems,inc.这个团队 FreeNAS和Truenas产品。几年前那个队找我 对Pysmart感兴趣,尽管我和公司没有其他关系。在 他们的请求我做了一个简单的更改,允许pysmart在freebsd上运行 将许可证从gpl更改为lgpl,以允许他们在我的工作和 把它融入他们的产品中。他们开始在github上托管代码, 在接下来的几年里,他们把这个项目推向了一个新的高度。 由于他们的工作,代码现在与python 3兼容,支持nvme硬件 还有其他一些改进和错误修复。
此版本1.0只是上的代码的pypi的下载和重新打包。 Freenas Github,于2019年8月9日在https://github.com/freenas/py-SMART找到。 这几乎肯定是pypi上pysmart的最后一个版本,因为我和 ixsystems团队已经在这个项目上工作了一年多。
关于许可的最后说明
应几家寻求在其产品中使用此代码的公司的要求, 许可证已从gpl更改为稍微更为允许的lgpl。 这应该可以让你以李的身份打电话给皮斯马特使用它就像在你的 拥有自己的项目,不用担心“GPL污染”。如果你在读这个 如果您认为许可证的限制性太强,请联系我。我非常 愿意在更宽松的许可下私下提供代码, 包括一些公司或商业用途。我只想让你打个招呼 首先,告诉我一些关于你的项目以及Pysmart如何融入其中。