【发布时间】:2021-02-18 21:58:04
【问题描述】:
这是我的xml的一部分;
<LOGICAL_DRIVE>
<LABEL VALUE = "01"/>
<STATUS VALUE = "Degraded"/>
<CAPACITY VALUE = "99 GiB"/>
<FAULT_TOLERANCE VALUE = "RAID 1/RAID 1+0"/>
<LOGICAL_DRIVE_TYPE VALUE = "Data LUN"/>
<ENCRYPTION_STATUS VALUE = "Not Encrypted"/>
<PHYSICAL_DRIVE>
<LABEL VALUE = "Port 1I Box 1 Bay 1"/>
<STATUS VALUE = "OK"/>
<MODEL VALUE = "MM1000GBKAL"/>
<CAPACITY VALUE = "931 GiB"/>
<MARKETING_CAPACITY VALUE = "1000 GB"/>
<LOCATION VALUE = "Port 1I Box 1 Bay 1"/>
<FW_VERSION VALUE = "HPGE"/>
<DRIVE_CONFIGURATION VALUE = "Configured"/>
<ENCRYPTION_STATUS VALUE = "Not Encrypted"/>
<MEDIA_TYPE VALUE = "HDD"/>
</PHYSICAL_DRIVE>
<PHYSICAL_DRIVE>
<LABEL VALUE = "Port 2I Box 1 Bay 5"/>
<STATUS VALUE = "FAILED"/>
<MODEL VALUE = "MM1000GBKAL"/>
<CAPACITY VALUE = "931 GiB"/>
<MARKETING_CAPACITY VALUE = "1000 GB"/>
<LOCATION VALUE = "Port 2I Box 1 Bay 5"/>
<FW_VERSION VALUE = "HPGE"/>
<DRIVE_CONFIGURATION VALUE = "Configured"/>
<ENCRYPTION_STATUS VALUE = "Not Encrypted"/>
<MEDIA_TYPE VALUE = "HDD"/>
</PHYSICAL_DRIVE>
</LOGICAL_DRIVE>
<LOGICAL_DRIVE>
我想获取 LOGICAL_DRIVE 的 STATUS 的 VALUE 不正常的 LABEL 的 VALUE。
我正在使用以下内容;
xmllint --xpath "//LOGICAL_DRIVE[.//STATUS[not(@VALUE='OK')]]/LABEL[@VALUE]" health.xml
但是,我有一个旧版本的系统,我无法更新它。这个我试过了;
xmlstarlet sel -t -m "//PHYSICAL_DRIVE/STATUS/@value='OK']" -v "../LABEL/text()" -nl health.xml
但它没有用。在这个版本的xml中,如果LOGICAL_DRIVE的STATUS的VALUE不OK,如何获取LABEL的VALUE?
提前致谢
【问题讨论】:
-
您确定您的意思是“LOGICAL_DRIVE 的状态不正常”吗?在您的示例中,逻辑驱动器的状态为“降级”。您是指物理驱动器的状态吗?
标签: xml xpath xml-parsing xmlstarlet xmllint