Question Comment trouver quel écran (et donc le port) l'interface utilisateur de VNC pour un invité kvm a? Ou comment l'assigner


Existe-t-il un moyen simple de trouver l’écran VNC (c'est-à-dire le numéro de port moins 5900) sur lequel un invité KVM est lié?

Mes invités sont tous configurés pour fonctionner avec VNC activé, mais l'ordre dans lequel ils occupent les ports est aléatoire.

Sinon, existe-t-il un moyen de les affecter dans la configuration (d'invité ou d'hôte), de sorte que chaque invité respectif occupe un port prédéfini?!


5
2017-11-23 19:29


origine




Réponses:


Depuis que vous utilisez libvirt, vous pouvez simplement le demander!

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

(Ma corrélation particulière entre le nom et le port d'affichage VNC est due à l'utilisation de Open Nebula)

EDIT: De nos jours, vous pouvez utiliser domdisplay pour obtenir l’URI de l’affichage, qu’il s’agisse de VNC ou de 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


Voici un one-liner à exécuter pour tous les invités en même temps:

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

Fait également une fonction qui trie la sortie par numéro de port:

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
}

10
2018-02-09 14:33



Wow, merci beaucoup pour cela. C'est exactement ce que je cherchais. Je vais éditer un Bash one-liner dans votre réponse pour le rendre complet. - 0xC0000022L
Hmm, eh bien, le doublage sur lequel j'ai travaillé a apparemment été modifié en un triplé. Cela me rend stupide comme si je ne savais pas quelle était la différence entre 1 et 3, mais je vous promets que la version que j'avais était en train de la fourrer sur une seule ligne;) ... je n'ai pas encore les droits d'édition, alors Je suis à la merci des autres avec ça. - 0xC0000022L
Je l'ai édité en trois lignes pour plus de lisibilité et il n'est donc pas nécessaire de faire défiler l'affichage. - MikeyB
Pour une raison quelconque dans mon installation, virsh vncdisplay n’affiche pas le port VNC. "#virsh vncdisplay vm01 ne renvoie rien". J'ai installé tigetvnc. Et en cours d'exécution Centos 6 - chandank
@chandank vous avez probablement un présentoir à épices - utilisez le domdisplay commande pour obtenir l'URI plus général - MikeyB


Je courrais:

ps aux | grep "VM name/config"

Notez l'ID de processus puis

netstat -apn | grep "process ID"

Cela devrait montrer que vous êtes ouvert au port par ce processus.


3
2017-11-23 20:10



D'accord, désolé j'aurais dû définir beaucoup mieux mieux simple. Je pensais pouvoir faire quelque chose comme ça, mais ce n'est ni pratique ni "automatisé". J'attendrai d'autres réponses, mais merci :) - 0xC0000022L


Pour définir l’affichage, il suffit de fournir explicitement le -vnc <ip:display> option pour qemu-kvm. Voir le page de manuel à qemu-kvm, en particulier le -vnc section de paramètre pour plus de détails.


2
2017-11-23 20:58