grep содержимое файлов на основе списка файлов

Запуск CentOS 6.5, qemu-kvm.

У меня есть скрипт, который строит список запущенных виртуальных машин. Я хочу извлечь информацию из этих .xml-файлов только тех виртуальных машин, которые работают.

cat /dev/null > /<path>/runlist virsh list --all|grep running|awk -F" " '{print $2}' > /<path>/runlist.tmp

Теперь, когда у меня есть список запущенных vm, я хочу сопоставить их с соответствующими файлами .xml в списке каталогов, в котором содержатся XML-файлы всех наших данных vm и pull.

Я знаю, что могу:

 grep <info> </path/file.xml> 

Но как мне получить этот средний бит, который будет анализировать файл runlist по списку каталогов и только поиск информации из файлов, относящихся к работающим виртуальным машинам.


Пример файла xml:

 <domain type='kvm'> <name>"X"</name> <uuid>"X"</uuid> <memory unit='KiB'>"X"</memory> <currentMemory unit='KiB'>"X"</currentMemory> <vcpu placement='static'>1</vcpu> <os> <type arch='x86_64' machine='X'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/<path>/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/path/file.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <interface type='bridge'> <mac address='X'/> <source bridge='br1'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='tablet' bus='usb'/> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain> 

  • установить время аппаратного обеспечения
  • virt-manager: можно ли назначать определенные IP-адреса для сертификации виртуальных машин через виртуальный DHCP?
  • Как преобразовать параметры qemu для гостевого пользователя osx для libvirtd
  • Установка qemu-img на ubuntu 11.04
  • Qemu оканчивается на сигнал x от pid xxxx
  • Запуск ядра Linux в Virtualbox
  • Whonix 13.0.0.1.4 и 14.0.0.2.6 не загружаются
  • Разрешение Virt-manager Отказано при доступе к пулу NFS
  • 2 Solutions collect form web for “grep содержимое файлов на основе списка файлов”

    Прямой ответ на ваш вопрос:

     grep -f /path/to/runlist /path/to/file.xml 

    Но я думаю, что это вопрос XY : не задумываясь о том, как решить вопрос, что вы пытаетесь сделать?


    Учитывая, что runlist – это файл, содержащий имена файлов xml, я бы использовал инструмент обработки xml (например, xmlstarlet ) для извлечения vcpu:

     $ cat runlist sample1.xml sample2.xml $ xmlstarlet sel -t -v /domain/name -o $'\t' -v /domain/currentMemory -o $'\t' -v /domain/vcpu -nl $(< ./runlist) "X" "X" 1 "XX" 256 16 

    Кажется, что вы хотите получать информацию только из списка файлов в runlist. Ты можешь:

     grep <info> -- $(cat runlist) 
    Interesting Posts

    Действительно ли программное обеспечение действительно распознает реальное количество секторов в современных жестких дисках?

    Содержит ли жесткие ссылки обычные файлы?

    X, Xorg и D-Bus: какая разница?

    Как правильно настроить D-Bus?

    `docker logs foo | less` не доступен для поиска или прокрутки, но `docker logs foo 2> & 1 | меньше` является

    Обновление неактивной установки Linux

    Что вы фильтруете / исключаете список при выполнении резервного копирования с помощью rsync?

    Как объединить вывод двух запущенных файлов журнала в режиме реального времени

    Как обновить версию gcc-c ++ на Fedora?

    Параметры функции Bash – Пробелы в имени файла

    chmod и chown не работают в sudo, называемом скриптом

    Как получить CoreAudio от Mac до Linux / Unix?

    dconf и терминал, не отображающий ту же информацию

    Как настроить мостовую сеть с виртуальной машиной и хостом с KVM (Virt-Manager)?

    Как я могу определить, насколько стабильным является мой Debian (т. Е. Количество пакетов от тестирования / sid)?

    Linux и Unix - лучшая ОС в мире.