Intereting Posts
Освобождение программного обеспечения linux – совместимость Поиск библиотек, с которыми была связана библиотека, Регистрация попыток доступа к SSH В чем польза опции sortlist в /etc/resolv.conf? Есть ли инструмент linux vfs, который позволяет связывать каталог в другом месте (например, mount -bind) в пространстве пользователя? поиск ipv6-адреса для MAC-адреса у соседей Добавление столбца значений в файле с разделителями табуляции Как восстановить удаленную папку, полную файлов, управляемых dpkg? `du -sh` сообщает другой использованный размер, чем` df -h` Что означает следующее отрицательное значение ядра? Как правильно сопоставить UID на серверах NFS в нескольких доменах? Невозможно записать файлы с учетными данными root перенаправление stdout. sh: ресурс временно недоступен Установите несколько пакетов с помощью разных методов в одной команде Yum Как перенести все файлы, выводимые из команды?

Выполнение команды внутри гостевого vm Libvirt

Возможно ли выполнить команду, например: iostat внутри гостевой виртуальной машины, используя libvirt или virsh. Я хочу узнать IOPS для гостевого vm, но с libvirt java api. Я не могу получить IOPS vm, следовательно, другой метод было бы выполнить команду, подобную iostat внутри гостевого vm, и снять показания.

  1. Если вы настроили виртуальную последовательную консоль для своей виртуальной машины, вы можете использовать команду virsh console для подключения к ней.

    Вам придется использовать сценарий expect для входа с именем пользователя и паролем, запускать свои команды, извлекать выходные данные и затем выходить из системы.

    Заметьте, однако, что expect – это одноцелевой язык, и, ИМО, нет смысла изучать / использовать его, если вы этого еще не знаете. Вы намного лучше откладываете время, затрачиваемое на изучение языка общего назначения, такого как perl или python .

    Это дает дополнительное преимущество в том, что то, что вы хотите сделать, будет намного проще с perl Expect.pm или Expect.pm python , чем с pexpect . expect способность извлекать данные из сеанса довольно ограничена и примитивна по сравнению с тем, что может сделать perl или python .

    Кстати, вы упомянули Java API libvirt – быстрый поиск в Google показывает, что существует как минимум две разные реализации ожидающей библиотеки для Java. Может быть и больше.

    https://github.com/ronniedong/Expect-for-Java

    https://github.com/Alexey1Gavrilov/ExpectIt

    Я не программист на Java, никогда не использовал ни одного из них, понятия не имею, хороши ли они, и не может порекомендовать один за другим.

  2. В качестве альтернативы, если виртуальная машина имеет сетевой интерфейс с IP-адресом и установлена sshd (или вы можете установить его), вы можете ssh в виртуальную машину, как и любой другой хост. Это, безусловно, самый простой и лучший способ сделать то, что вы хотите.