Como você está usando libvirt
, pode simplesmente perguntar!
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
(minha correlação particular de nome para a porta de exibição do VNC é devido ao uso da Open Nebula)
EDIT: Hoje em dia, você pode usar domdisplay para obter o URI do display seja VNC ou 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
Aqui está um one-liner para executar isso para todos os convidados em execução de uma só vez:
for i in $(virsh -q list|awk '{print $2}'|sort); do
echo -e "3[01;31m$i3[00m -> $(virsh vncdisplay $i)"
done
Também fez isso em uma função que ordena a saída pelo número da porta:
function vnc-list
{
for i in $(virsh -q list|awk '{print $2}'|sort); do
PORTNUM=$(virsh vncdisplay $i|cut -f 2 -d ':')
printf "% 2d: 3[01;32m%.20s3[00m\n" "$PORTNUM" "$i";
done | sort -n
}