如何找到 kvm 客户端的 VNC UI 具有哪个屏幕(以及端口)?或者如何分配它

如何找到 kvm 客户端的 VNC UI 具有哪个屏幕(以及端口)?或者如何分配它

有没有直接的方法来找到 KVM 客户机绑定的 VNC 屏幕(即端口号减去 5900)?

我的客户机都配置为启用 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)

编辑:现在,您可以使用 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"

记下进程 ID,然后

netstat -apn | grep "process ID"

这应该表明您已通过该进程打开端口。

答案3

要设置显示,只需明确-vnc <ip:display>向 qemu-kvm 提供选项即可。请参阅qemu-kvm 的手册页,特别是-vnc参数部分的详细信息。

相关内容