IRF HF2 wsman Python script-ben

0 votes
asked Apr 12, 2016 in IRF tantárgy by gege (45 points)  

Sziasztok!

Azt olvastam a kiadott gyakorlat anyagban, hogy nem nagyon támogatott a pythonból WS-Management lekérdezés indítása, és hogy scripben hívjuk meg a wsman parancsot paraméterezve.
Erre a subprocess.Popen(..) metódust találtam, mert a pythonos előadáson írt subprocess.call(...) úgy tűnik a wsman-t nem szereti, pedig benne van a /bin-ben.
Ha a így használom,

subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

plusz a linux parancsban amit futtatok használok pipe-ot meg grep-et, akkor fel lehet dolgozni a választ csak olyan brute force-nak tűnik.

Van erre valami szeb megoldás?

1 Answer

+1 vote
answered Apr 12, 2016 by kovari (2,221 points)  
selected Apr 12, 2016 by gege
 
Best answer

Ennek működnie kell:

subprocess.check_output(["wsman", "-h", "localhost", "-u", "meres", "-p", "LaborImage",
"enumerate", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_Processor"], universal_newlines=True)

Nyilván a parancsot tehetjük egy stringbe és aztán feldarabolhatjuk, amire a 2. jegyzet is mutat példát. Ezt aztán parse-olhatjuk xml-re, amiben már hatékonyabban tudunk keresni. Ezzel is van egy kis macera, de általában ezt szoktuk alkalmazni. Megjegyzem, hogy más megoldás is természetesen elfogadott.
Viszont, a túlságosan is ad-hoc, nem rugalmas megoldások nem érnek max pontot. Például, ilyennek számít, ha a módszerünk csak az adott lekérdezendő osztályra működik, mert kihasználja, hogy a kimenetben mindig az N. sorban az X. karaktertől kezdve található meg a számunkra releváns információ. Tehát ezeket kerüljük.

commented Apr 12, 2016 by gege (45 points)  
Köszi!
Így már működik a subprocess.check_output()

Nekem az a feladatom, hogy linuxról,  le kell kérdeznem,hogy a win gépeken fenn vannak e az adott programok.
Itt ugye tudom, hogy a Name attribútumot kell figyelembe vennem. Eddig úgy csináltam ,hogy az egész paracs string-ben volt megadva és hozzá csaptam még a grep-et is hogy csak azt a sort adja vissza ami a Name attribútum benne van. Ez mennyire ad-hoc, rugalmatlan?
...