Есть ли простой способ найти экран VNC (т. е. номер порта минус 5900), к которому привязана гостевая система KVM?
Все мои гостевые системы настроены на работу с включенным VNC, но порядок, в котором они занимают порты, является случайным.
Или есть ли способ назначить их в конфигурации (гостя или хоста), чтобы каждый соответствующий гость занимал предопределенный порт?!
решение1
Поскольку вы используете libvirt
, вы можете просто спросить об этом!
root@onhost1:~# virsh list
Id Name State
----------------------------------
1 one-34 running
2 one-36 running
3 one-38 running
root@onhost1:~# virsh vncdisplay one-34
:34
root@onhost1:~# virsh vncdisplay 1
:34
(моя конкретная связь имени с портом дисплея VNC обусловлена использованием Open Nebula)
EDIT: В настоящее время вы можете использовать domdisplay, чтобы получить URI дисплея, будь то VNC или Spice:
○ → virsh domdisplay win-michael
vnc://127.0.0.1:0
○ → for dom in $(virsh list --name); do echo -n "$dom: "; virsh domdisplay $dom; done
win-michael-m: vnc://127.0.0.1:0
Вот однострочный код для выполнения этой команды для всех запущенных гостевых систем одновременно:
for i in $(virsh -q list|awk '{print $2}'|sort); do
echo -e "\033[01;31m$i\033[00m -> $(virsh vncdisplay $i)"
done
Также преобразовал его в функцию, сортирующую вывод по номеру порта:
function vnc-list
{
for i in $(virsh -q list|awk '{print $2}'|sort); do
PORTNUM=$(virsh vncdisplay $i|cut -f 2 -d ':')
printf "% 2d: \033[01;32m%.20s\033[00m\n" "$PORTNUM" "$i";
done | sort -n
}
решение2
Я бы побежал:
ps aux | grep "VM name/config"
Запишите идентификатор процесса, а затем
netstat -apn | grep "process ID"
Это должно показать, что этот процесс открыл порт.
решение3
Чтобы настроить отображение, просто явно укажите -vnc <ip:display>
опцию qemu-kvm. Смотритестраница руководства по qemu-kvm, особенно -vnc
раздел параметров для получения подробной информации.