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()