wbemcli:键/值对输出

时间:2015-05-28 21:57:46

标签: bash wbem

如果我使用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"

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

1 个答案:

答案 0 :(得分:1)

http://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf有一些示例,只是建议使用grep来获取您要查找的特定键和值。似乎没有办法直接查询结果集中的特定键。

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

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

获取$key中指定的键的值,前提是您有GNU grep,它为Perl兼容的正则表达式提供-P选项(此处为\K }“通过这里忘记”运算符很有用)。所以对于你的具体例子,

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

还有一个-dx选项可以生成XML输出,如果你打算在这个协议之上编写一个主要的应用程序,那么它可能会更强大(但是你可能应该看一下专用的WBEM库)例如C or Java libraries listed in their wiki)。编写一个简单的(例如)Python客户端来检索(部分?)结果树并允许您在本地查询或操作它似乎并不可信。