2

如果我wbemcli用来枚举所有实例,我会得到类似的东西:

wbemcli -nl -t -noverify ei 'https://aaa/aaa:aaa' 
https://aaa/aaa:aaa.Version="",Vendor="",Name=""
-Version#=""
-Vendor#=""
-Name#=""
-Description=""

我怎样才能打电话wbemcli只得到一件物品(即Name)?而不是一切。

-t选项说:

-t
将数组 ([])、引用 (&) 和关键属性 (#) 指示符附加到属性名称

但我无法利用它对我有利。

有没有办法以键/值对格式检索此信息?
或者也许将输出传送到一个数组或我只能从中获取我需要的东西的东西?

当我将输出放入数组时,所有数据都存储在第一个元素中${a[0]}

编辑 这是一个输出示例:

$ wbemcli -nl -t -noverify ei 'https://user:pw@000.000.000.000:0000/root/aaa:AA_AaaAaaaAaaaa'
000.000.000.000:0000/root/aaa:AA_AaaAaaaAaaaa.ClassName="AA_AaaAaaaAaaaa",Name="123456a7ff890123"
-ClassName#="AA_AaaAaaaAaaaa"
-Name#="123456a7ff890123"
-Caption="aa aaa"
-Description="aa aa"
-ElementName="aa aaa aaaa"
-OperationalStatus[]=2
-HealthState=5
-CommunicationStatus=2
-DetailedStatus=1
-OperatingStatus=0
-PrimaryStatus=1
-EnabledState=5
-RequestedState=12
-EnabledDefault=2
-TransitioningToState=12
-PrimaryOwnerName="Uninitialized Contact"
-PrimaryOwnerContact="Uninitialized Contact"

输出通常采用这种格式。
如果查询返回多个对象,它们将被分组,并且所有对象都将具有相同的成员及其适当的值。

4

1 回答 1

1

http://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf有许多示例,它们只是建议用于grep获取您正在寻找的特定键和值。似乎没有办法直接查询结果集中的特定键。

扩展 Etan Reisner 的评论,您可以使用类似

wbemcli <<query>> | grep -oP "^-$key=\K.*"

获取名为 in 的键的值$key,前提是您有 GNU grep,它提供了-P与 Perl 兼容的正则表达式的选项(在这里,\K“忘记到这里”操作符很有用)。因此,对于您的具体示例,

wbemcli -nl -t -noverify ei 'https://aaa/aaa:aaa' |
grep -oP '^-Name#=\K.*'

还有一个-dx选项可以生成 XML 输出,如果您计划在此协议之上编写一个主要应用程序,这可能会更加健壮(但也许您应该查看一个专用的 WBEM 库,例如列出的 C 或 Java 库在他们的维基中)。编写一个简单的(例如)Python 客户端来检索(部分?)结果树并让您在本地查询或操作它似乎也不令人难以置信。

于 2015-12-28T08:13:47.097 回答