¿Cómo encontrar qué pantalla (y por tanto puerto) tiene la interfaz de usuario de VNC para un invitado kvm? O como asignarlo

¿Cómo encontrar qué pantalla (y por tanto puerto) tiene la interfaz de usuario de VNC para un invitado kvm? O como asignarlo

¿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 -vncsección de parámetros para más detalles.

información relacionada