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

0xC*_*22L 10 linux vnc kvm-virtualization

是否有一种直接的方法可以找到绑定 KVM 来宾的 VNC 屏幕(即端口号减去 5900)?

我的来宾都配置为在启用 VNC 的情况下运行,但它们占用端口的顺序是随机的。

或者,有没有办法在(来宾或主机的)配置中分配它们,这样每个来宾将占用一个预定义的端口?!

Mik*_*eyB 17

既然你在用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
Run Code Online (Sandbox Code Playgroud)

(我的名称与 VNC 显示端口的特殊关联是由于使用了 Open Nebula)

编辑:如今,无论是 VNC 还是 Spice,您都可以使用 domdisplay 来获取显示的 URI:

? ? 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
Run Code Online (Sandbox Code Playgroud)


这是一次为所有正在运行的客人执行此操作的单行:

for i in $(virsh -q list|awk '{print $2}'|sort); do
  echo -e "\033[01;31m$i\033[00m -> $(virsh vncdisplay $i)"
done
Run Code Online (Sandbox Code Playgroud)

还把它变成了一个按端口号对输出进行排序的函数:

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
}
Run Code Online (Sandbox Code Playgroud)