如果我使用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"
输出通常采用这种格式 如果查询返回多个对象,则它们将被分组,并且所有对象都具有相同的成员及其适当的值。
答案 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客户端来检索(部分?)结果树并允许您在本地查询或操作它似乎并不可信。