¿Existe una forma sencilla de encontrar la pantalla VNC (es decir, el número de puerto menos 5900) a la que está vinculado un invitado KVM?
Todos mis invitados están configurados para ejecutarse con VNC habilitado, pero el orden en el que ocupan los puertos es aleatorio.
Alternativamente, ¿hay alguna manera de asignarlos en la configuración (de invitado o anfitrión), de modo que cada invitado respectivo ocupe un puerto predefinido?
Respuesta1
Ya que estás usando libvirt
, ¡puedes preguntarlo!
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
(mi correlación particular del nombre con el puerto de visualización VNC se debe al uso de Open Nebula)
EDITAR: Hoy en día, puedes usar domdisplay para obtener el URI de la pantalla, ya sea VNC o 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
Aquí hay una sola línea para ejecutar esto para todos los invitados en ejecución a la vez:
for i in $(virsh -q list|awk '{print $2}'|sort); do
echo -e "\033[01;31m$i\033[00m -> $(virsh vncdisplay $i)"
done
También lo convertimos en una función que ordena la salida por número de puerto:
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
}
Respuesta2
Yo correría :
ps aux | grep "VM name/config"
Anote el ID del proceso y luego
netstat -apn | grep "process ID"
Esto debería mostrar que ese proceso tiene el puerto abierto.
Respuesta3
Para configurar la visualización, simplemente proporcione explícitamente la -vnc <ip:display>
opción qemu-kvm. Ver elpágina de manual de qemu-kvm, especialmente la -vnc
sección de parámetros para más detalles.