12
votes

Comment obtenir le numéro de port VNC à l'aide de Libvirt?

i définissez autoport = oui dans un fichier de configuration de domaine ("" machine virtuelle "dans LibVirt) afin que le port VNC soit attribué automatiquement au moment de l'exécution.

J'ai besoin d'obtenir ce port afin que je puisse me connecter à la machine virtuelle de l'extérieur, mais je ne trouve pas l'API approprié à le faire. Mieux en python parce que j'utilise les fixations de Libvirt-Python.


0 commentaires

4 Réponses :


21
votes

Je n'ai trouvé aucune API pour le port VNC, je ne sais pas si la nouvelle version de Libvirt a cette interface?

Toutefois, vous pouvez utiliser la commande VIRSH VNCDisplay $ DomainName pour afficher le port. Remarque: Vous devez modifier /etc/libvirt/qemu.conf Activer vnc_listen = '0.0.0.0' . .


0 commentaires

7
votes

Il n'y a pas d'API pour obtenir le port VNC. Vous devez prendre et analyser le fichier XML pour découvrir ce port. Bien sûr, si l'invité est détruit (éteint / déconnecté) que le port sera une valeur de -1.

char * virDomainGetXMLDesc (virDomainPtr domain, unsigned int flags)

<domain>
  <devices>
    <graphics type='vnc' port='5900' autoport='yes'/>
  </devices>
</domain>


0 commentaires

0
votes

Voici un pour la version PHP, si quelqu'un en a besoin:

    $res = libvirt_domain_lookup_by_name($conn, $domname);
    $xmlString = libvirt_domain_get_xml_desc($res, '');

    $xml = simplexml_load_string($xmlString);
    $json = json_encode($xml);
    $data = json_decode($json,TRUE);

    $port = intval($data["devices"]["graphics"]["@attributes"]["port"]);


0 commentaires

4
votes

Voici comment vous le faites dans Python, au cas où quelqu'un en a besoin.

Enregistrer sous Vncport.py P>

python vncport.py <domain name>


1 commentaires

Il convient de mentionner pour la clarté, car je n'étais pas et j'ai trouvé cela via Erreur: cette valeur, car elle provenait de l'info live xml, gérera correctement les ports dynamiques. Donc, si la machine virtuelle est la 3ème VNC VM pour démarrer, cette définition XML affichera 5902 comme vous l'attendez même si la configuration de la base est port = 5000 autoport = oui .