wbemcli: вывод пары ключ / значение

Если я использую 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 ответ

http://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf содержит несколько примеров, которые просто предлагают использовать grep чтобы получить конкретный ключ и значение, которое вы ищете. Кажется, нет способа напрямую запросить определенный ключ в наборе результатов.

Расширяя комментарий Этана Рейснера, вы можете использовать что-то вроде

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

чтобы получить значение для ключа, указанного в $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 для извлечения (часть?) Дерева результатов и позволить вам запрашивать или манипулировать им локально.

Другие вопросы по тегам