i définissez 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. P> autoport = oui code> 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. P>
4 Réponses :
Je n'ai trouvé aucune API pour le port VNC, je ne sais pas si la nouvelle version de Libvirt a cette interface? P>
Toutefois, vous pouvez utiliser la commande VIRSH VNCDisplay $ DomainName code> pour afficher le port.
/etc/libvirt/qemu.conf code> Activer
vnc_listen = '0.0.0.0' code>. p>.
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>
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"]);
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>
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 i> 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 de code> comme vous l'attendez même si la configuration de la base est
port = 5000 autoport = oui code>.