2

すべてのインスタンスを列挙するために使用wbemcliすると、次のような結果が得られます。

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

wbemcli1 つのアイテム (つまり ) だけを取得するにはどうすればよい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.pdfgrepには、探している特定のキーと値を取得するために使用することを単に提案する多くの例があります。結果セット内の特定のキーを直接クエリする方法はないようです。

Etan Reisner によるコメントを拡張すると、次のようなものを使用できます

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

で指定されたキーの値を取得するには、 Perl 互換の正規表現のオプションを提供する$keyGNUを使用している必要があります (ここでは、 「ここまで忘れる」演算子が便利です)。したがって、特定の例については、grep-P\K

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

XML 出力を生成するオプションもあり-dxます。このプロトコルに基づいて主要なアプリケーションを作成する予定がある場合は、より堅牢になる可能性があります (ただし、リストされている C または Java ライブラリなどの専用の WBEM ライブラリを参照する必要があります)。彼らのウィキで)。結果ツリー (の一部?) を取得し、それをローカルでクエリまたは操作できるようにするための単純な (たとえば) Python クライアントを作成することは、信じがたいことではないようです。

于 2015-12-28T08:13:47.097 に答える