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