Разобрать вывод вирша

Есть ли способ заставить virsh печатать информацию в разборчивом виде? как 2_?

Я хочу написать однострочную команду оболочки, которая получает IP-адрес виртуальной машины, но способ, которым virsh распечатывает его, не очень удобен для сценариев:

# virsh domifaddr myvm
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:b9:58:64    ipv4         192.168.130.156/24

Я ищу способ заставить его не печатать заголовки, по крайней мере, чтобы я мог легко получить «192.168.130.156» на выходе

Это лучшее, что я мог сделать:

# virsh -q domifaddr myvm | awk '{print $4}' | cut -d/ -f 1
192.168.130.156

person Jeff Saremi    schedule 28.08.2020    source источник
comment
Выполнил быстрый поиск в справочных страницах virsh, и кажется, что нет ничего лучше, чем печатать вывод в формате json или xml. Есть опция --pretty, но она недоступна с domifaddr. Я думаю, ваш подход правильный и не может думать о другом способе сделать это. Подобно вашему, поскольку информация об ip является последним словом в строке, вы также можете сделать: awk 'NF>1{print $NF}' | cut -d/ -f1   -  person lainatnavi    schedule 28.08.2020
comment
Спасибо, что изучили это. Думаю, я просто соглашусь с тем, что есть.   -  person Jeff Saremi    schedule 29.08.2020


Ответы (1)


Один из вариантов — установить qemu-guest-agent на домены, из которых вы хотите извлечь информацию об IP.

Оттуда вы можете выполнить следующую команду на хосте, чтобы получить подробный список сетевых интерфейсов в формате JSON:

ubuntu@host:~$ virsh qemu-agent-command my-guest '{"execute":"guest-network-get-interfaces"}'
{"return":[{"name":"lo","ip-addresses":[{"ip-address-type":"ipv4","ip-address":"127.0.0.1","prefix":8},{"ip-address-type":"ipv6","ip-address":"::1","prefix":128}],"statistics":{"tx-packets":22,"tx-errs":0,"rx-bytes":2816,"rx-dropped":0,"rx-packets":22,"rx-errs":0,"tx-bytes":2816,"tx-dropped":0},"hardware-address":"00:00:00:00:00:00"},{"name":"eth0","ip-addresses":[{"ip-address-type":"ipv4","ip-address":"1.2.3.4","prefix":22},{"ip-address-type":"ipv6","ip-address":"abcd::1234:ee:ab12:e31d","prefix":64}],"statistics":{"tx-packets":11231,"tx-errs":0,"rx-bytes":40717370,"rx-dropped":0,"rx-packets":19744,"rx-errs":0,"tx-bytes":890354,"tx-dropped":0},"hardware-address":"01:02:00:03:04:05"}]}

Ваш json может быть проанализирован, как вы хотите.

person Ali haider    schedule 03.12.2020