如何找到 kvm guest 虛擬機器的 VNC UI 有哪個畫面(以及連接埠)?或說如何分配

如何找到 kvm guest 虛擬機器的 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參數部分的詳細資訊。

相關內容