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 を使用しているためです)

編集: 現在では、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


実行中のすべてのゲストに対してこれを一度に実行するワンライナーを次に示します。

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詳細についてはパラメータ セクションを参照してください。

関連情報