Korrektur: probiere es mit del list[-2:]
Am 15. Februar 2011 08:56 schrieb Denny Schierz <[email protected]>: > 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 > > -- > ---------------------------------------------------------------------------- > PUG - Penguin User Group Wiesbaden - http://www.pug.org > > -- ---------------------------------------------------------------------------- PUG - Penguin User Group Wiesbaden - http://www.pug.org

