Ez kicsit trükkös volt. Mivel azt írtad, hogy kíváncsi vagy rá, így leírom.
A subprocess híváskor keletkező exception (subprocess.CalledProcessError
) által visszaadott futtatott cmd valóban helyes, terminálba bemásolva visszakapjuk a releváns adatokat. Azonban a subprocess hívásnak nem teljesen ezt adjuk át. Ha a hívás előtt kiíratjuk a cmd tömb tartalmát:
['wsman', '--hostname', 'localhost', '-u', 'meres', '-p', 'LaborImage',
'--auth', 'basic', 'associators', "'http://schemas.dmtf.org/wbem/wscim/1/*'", '--filter',
'\'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/LMI_DiskPartition?CreationClassName="LMI_DiskPartition",DeviceID="/dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part1",SystemCreationClassName="PG_ComputerSystem",SystemName="localhost",AssociationClassName="LMI_StorageElementStatisticalData"\'']
akkor látható, hogy az utolsó elem elé és után bekerült 1-1 fölösleges backslash. A kódban itt a bűnös rész:
command = "associators 'http://schemas.dmtf.org/wbem/wscim/1/*' --filter '"
command += "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/"
A második http://schemas...
részhez tartozó aposztróf még az első sorba került, a filter
végére, és aztán így az stringek összefűzése során valahogy bekerült egy backslash. A másik backslash probléma hasonló módon javítható. Így a cmd tömb már az alábbi módon néz ki:
['wsman', '--hostname', 'localhost', '-u', 'meres', '-p', 'LaborImage',
'--auth', 'basic', 'associators', "'http://schemas.dmtf.org/wbem/wscim/1/*'", '--filter',
'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/LMI_DiskPartition?CreationClassName="LMI_DiskPartition",DeviceID="/dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:0:0-part1",SystemCreationClassName="PG_ComputerSystem",SystemName="localhost",AssociationClassName="LMI_StorageElementStatisticalData"']
A lekérdezés azonban még mindig nem megy. Ami szembetűnő, hogy a "'http://schemas.dmtf.org/wbem/wscim/1/*'"
résznél fölöslegesen található 1 pár idézőjel. Ezt kitörölve már valóban lefut a lekérdezés, és a json kimenet is helyesen létrejön.