( Vamp | 2021. 03. 10., sze – 00:46 )

Szerkesztve: 2021. 03. 10., sze – 01:05

Vegul csak pyVmomi lett (ugy voltam vele, az a 400kb nem faj, python meg ugyis van a Centos-eken... )

 

Viszont itt is van egy kis bibi... UUID alapjan probalnam osszeparositani a gepeket, de valami nem kerek..

Lekerem dmidecode-al az UUID-t es ez jon:

 

0c4c1742-cfb6-6552-e799-a133cd9e7050

 

Viszont, ha megnezem a vmx fajlban, ezt latom:

 

uuid.bios = "42 17 4c 0c b6 cf 52 65-e7 99 a1 33 cd 9e 70 50"

 

Nyilvan a hasonlosag szembetuno , ugyanazok a karakter parok vannak mindkettoben csak nem ugyanazon sorrendben.... Igy nyilvan a script nem talalja a VM-et...

 

a python script igy nez amugy ki:

 

#!/usr/bin/env python
import atexit
import pyVmomi
import ssl

from pyVmomi import vim, vmodl
from pyVim.connect import SmartConnect, Disconnect


context = ssl._create_unverified_context()
si = SmartConnect(host='hostname', port='443', user='username', pwd='pass', sslContext=context)


atexit.register(Disconnect, si)
file = open('/sys/devices/virtual/dmi/id/product_uuid')
uuid = file.read().strip().lower()
file.close()

search_index = si.content.searchIndex
vm = search_index.FindByUuid(None, uuid, True, False)

print vm.summary.config.name

 

 

Meg annyi, hogy igy amugy mukodik. Viszont abban nem vagyok biztos, hogy amikor lefutna, mar olyan allapotban lesz az open-vm-tools, hogy adni fog IP-t... Ezert lenne jobb az UUID modszer.

 

#!/usr/bin/env python
import atexit
import pyVmomi
import ssl
import socket

from pyVmomi import vim, vmodl
from pyVim.connect import SmartConnect, Disconnect


ip = ((([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")] or [[(s.connect(("8.8.8.8", 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) + ["no IP found"])[0])

context = ssl._create_unverified_context()
si = SmartConnect(host='hostname', port='443', user='username', pwd='pass', sslContext=context)


atexit.register(Disconnect, si)

search_index = si.content.searchIndex

vm = search_index.FindByIp(None, ip, True)

name = vm.summary.config.name

print name.lower()