hi, ich habe mal die Anmerkungen übernommen und versuche nun die Funktion get_state zu basteln. Dazu muss zuerst wieder die Liste der verfügbaren VMs erzeugt werden, um diese dann zu durchsuchen. Der Benutzer soll tippen können:
./vmx -g cluster1
Als Ausgabe soll ein schlichtes: off/on erscheinen.
Ruft man das vmware-cmd Tool auf, sieht das so aus:
vmware-cmd
/vmfs/volumes/4c52874b-65503560-05f0-0021288ea4ad/cluster_1/cluster_1.vmx
getstate
Ausgabe:
getstate() = off
Od. auch:
vmware-cmd /vmfs/volumes/4c52874b-65503560-05f0-0021288ea4ad/cacti/cacti.vmx
getstate
getstate() = on
Mittels find und dann split müssten man das so zerlegen, dass der User
nur "cacti" od. "cluster_1" angeben kann, wobei auch Leerzeichen OK sein
müssen:
/vmfs/volumes/4c52874b-65503560-05f0-0021288ea4ad/vmwarevm/Windows XP
Professional.vmx
Ich wäre wieder für Tipps aufgeschlossen :-)
Hier mal mein derzeitiger Code, wobei ich anmerken muss, dass mir das
if/else am Ende nicht gefällt. Da gibt es sicher etwas eleganteres.
cu denny
----------------------------------------------------
#!/usr/bin/python2.5
#Dient der verwaltung von VMs
######## imports ########
import sys
from optparse import OptionParser
from subprocess import Popen, PIPE, STDOUT
####### Definitionen ########
#### Liste der registrierten VMs vom ESX erhalten ####
def reg_vm(regvm):
vm = Popen(['vmware-cmd','-s', 'listvms'], stdout=PIPE,
stdin=PIPE, stderr=STDOUT).communicate()[0].split('\n')
vm = [line.strip() for line in vm if line.strip()]
if regvm == str("all"):
for entry in vm:
print vm.index(entry), entry
else:
try:
print vm[regvm]
except IndexError:
print("Kein Eintrag vorhanden")
sys.exit(3)
def get_state(getstate):
vm = Popen(['vmware-cmd','-s', 'listvms'], stdout=PIPE,
stdin=PIPE, stderr=STDOUT).communicate()[0].split('\n')
vm = [line.strip() for line in vm if line.strip()]
vm = vm.split(".")
vm = vm.find(getstate)
print vm
####### Arg parser ###########
parser = OptionParser()
parser.add_option("-r", "--registerd-vm",
action="store",
type="string",
dest="regvm",
help="Get list of registerd VM, use 'all' to get
all VMs")
parser.add_option("-s", "--set-state",
action="store",
type="string",
dest="setstate",
#choices=['off', 'on', 'reset'],
help="Set powerstate from VM")
parser.add_option("-g", "--get-state",
action="store",
type="string",
dest="getstate",
help="Get powerstate from VM")
(options, args) = parser.parse_args()
#### Werte zuweisen ####
regvm = options.regvm
print("regvm", regvm)
setstate = options.setstate
print("setstate",setstate)
getstate = options.getstate
print("getstate", getstate)
############## main #############
if regvm == None and getstate == None and setstate == None:
print("Keine Paramter angegeben, siehe --help")
if regvm == None and (getstate == None and setstate == None) or
(getstate != None and setstate != None):
print("-g und -s schliessen sich aus")
else:
if regvm != None:
if regvm == str("all"):
reg_vm(regvm)
else:
regvm = int(regvm)
reg_vm(regvm)
else:
if getstate != None:
get_state(getstate)
signature.asc
Description: This is a digitally signed message part
-- ---------------------------------------------------------------------------- PUG - Penguin User Group Wiesbaden - http://www.pug.org

