hi, da aus Perl nichts geworden ist, versuche ich es mal mit Python und habe gleich die erste Aufgabe gefunden:
Ich will mir (unter anderem für Nagios) einen Wrapper schreiben, mit dem ich bestimmte Zustände von ESX VMs abfragen od. auch initiieren kann. »Also Ist VM X eingeschaltet, wenn nicht, schalte sie ein etc.« Dafür rufe ich im Prinzip immer nur vmware-cmd <paramter> auf. Die Ausgabe von z.B. vmware-cmd -s listvms (Listet alle registrierten VMs auf) lasse ich in eine Liste schreiben. Nun hatte ich das Problem, dass am Ende der Liste immer noch zwei Einträge mit Leerzeilen vorhanden waren (.split('\n')). Diese wollte ich löschen, habe es nicht so richtig hinbekommen, im Sinne von: lösche mit del list[:2] die letzten beiden Einträge. Allerdings wirkt das genau verkehrt rum ... es werden nur noch die Einträge 0 und 1 angezeigt. Also habe ich vorher ein list.reverse() angeworfen und siehe da, mein del list[:2] löscht die überflüssigen Einträge raus. Doch mich würde interessieren, wie ich die Leerzeilen bereits beim befüllen der Liste vermeiden kann. Da mir das schon wieder wie ein Hack vorkommt: ============ ./test2.py [..] ('VM :', 18, '/vmfs/volumes/4c52874b-05f0/vm5/vm5.vmx') ('VM :', 19, '/vmfs/volumes/4c52874b-05f0/cluster_1/cluster_1.vmx') ('VM :', 20, '/vmfs/volumes/4c52874b-05f0/cluster_2/cl_2.vmx') ('VM :', 21, '') ('VM :', 22, '') da man nicht weiß, wie lang die Liste wird, kann man diese nicht explizit mit del 21,22 angehen. Die beiden Newlines kommen schon vom vmware-cmd Kommando: # vmware-vmd -s listvms | od -taz [...] 0002620 a d / c l u s t e r _ 2 / c l u >ad/cluster_2/clu< 0002640 s t e r _ 2 . v m x nl nl >ster_2.vmx..< 0002654 Meine ersten Anfänge sehen so aus (2 Bücher + Google) ========================= #!/usr/bin/python2.5 #imports from optparse import OptionParser from subprocess import Popen, PIPE, STDOUT # Definitionen def list_vm(choice): list = Popen(['vmware-cmd','-s', 'listvms'], stdout=PIPE, stdin=PIPE, stderr=STDOUT).communicate()[0].split('\n') #list.reverse() #del list[:2] if choice == 0: for index in range(len(list)): print("VM :",index, list[index]) else: print("VM:", list[choice]) choice = 0 list_vm(0) ========================== Wie bekomme ich die überflüssigen \nl da nun raus? cu denny
signature.asc
Description: This is a digitally signed message part
-- ---------------------------------------------------------------------------- PUG - Penguin User Group Wiesbaden - http://www.pug.org