Seite 1 von 1

opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 09:22
von Anojan
Hallo,

ich habe bereits erfolgreich mehrere opsi-admin Methoden in WINST-Skripte eingebaut.

Doch bei folgender Methode, weiß ich nicht, wie ich diese per WINST zum Laufen kriege.

Als Aufruf im Terminal direkt auf dem OPSI-Server klappt es und ich erhalte die gewünschten Ergebnisse:

opsi-admin -d method auditSoftwareOnClient_getHashes '[]' '{ clientId":"testclient.testdomain.de"}'

Wie schreibe ich diesen Befehl nun im WINST-Skript? Ich habe folgende Sektion:

[opsiservicecall_auditSoftwareOnCLient]
"method": "auditSoftwareOnClient_getHashes"
"params": [

'[]' '{"clientId":"%HostID%"}'

]

Ich glaube im Teil "params" habe ich einen Syntaxfehler. Könnt ihr mir bitte helfen oder wird diese Methode nicht von WINST unterstützt?

Gruß
Anojan

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 09:30
von n.wenselowski
Guten Morgen Anojan,

es sollte funktionieren, wenn du nach '[]' noch ein Komma machst.


Viele Grüße

Niko

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 10:12
von Anojan
Hallo Niko,
im WINST siehts nun so aus:

[opsiservicecall_auditSoftwareOnClient]
"method": "auditSoftwareOnClient_getHashes"
"params": [

'[]', '{"clientId":"%HostID%"}'

]




ich erhalte aber folgenden Fehler im instlog:

[5] [Okt 10 10:07:12:433] [testsoftware] Execution of opsiservicecall_auditSoftwareOnClient
[6] [Okt 10 10:07:12:433] [testsoftware] "method": "auditSoftwareOnClient_getHashes"
[6] [Okt 10 10:07:12:433] [testsoftware] Calling opsi service at https://10.10.3.198:4447
[6] [Okt 10 10:07:12:434] [testsoftware] JSON service request https://10.10.3.198:4447/rpc auditSoftwareOnClient_getHashes
[6] [Okt 10 10:07:12:487] [testsoftware] JSON Bench for auditSoftwareOnClient_getHashes "params":["[]"],"id":1} Start: 10:07:12:433 Time: 00:00:00:054
[3] [Okt 10 10:07:12:489] [testsoftware] Error: retrieveJSONObject --- opsi service problem ----> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[3] [Okt 10 10:07:12:489] [testsoftware] Error: -> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[6] [Okt 10 10:07:12:489] [testsoftware] retrieving strings from getReturnListFromSection [switch to loglevel 7 for debugging]

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 14:23
von n.wenselowski
Hallo Anojan,

das Problem muss noch irgendwo anders liegen.
Anojan hat geschrieben:ich erhalte aber folgenden Fehler im instlog:

[5] [Okt 10 10:07:12:433] [testsoftware] Execution of opsiservicecall_auditSoftwareOnClient
[6] [Okt 10 10:07:12:433] [testsoftware] "method": "auditSoftwareOnClient_getHashes"
[6] [Okt 10 10:07:12:433] [testsoftware] Calling opsi service at https://10.10.3.198:4447
[6] [Okt 10 10:07:12:434] [testsoftware] JSON service request https://10.10.3.198:4447/rpc auditSoftwareOnClient_getHashes
[6] [Okt 10 10:07:12:487] [testsoftware] JSON Bench for auditSoftwareOnClient_getHashes "params":["[]"],"id":1} Start: 10:07:12:433 Time: 00:00:00:054
[3] [Okt 10 10:07:12:489] [testsoftware] Error: retrieveJSONObject --- opsi service problem ----> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[3] [Okt 10 10:07:12:489] [testsoftware] Error: -> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[6] [Okt 10 10:07:12:489] [testsoftware] retrieving strings from getReturnListFromSection [switch to loglevel 7 for debugging]
Da fehlen Parameter, würde ich sagen.

Ansonsten klappt der von dir gezeigte Code, hier mal testweise zusammen gesteckt in ein Mini-Script:

Code: Alles auswählen

[Actions]
DefVar $out$
DefStringList $ResultList$

set $ResultList$ = getReturnListFromSection('opsiservicecall_auditSoftwareOnClient')
Comment "We are done with the request."
set $out$ = composeString($ResultList$, " ")


[opsiservicecall_auditSoftwareOnClient]
"method": "auditSoftwareOnClient_getHashes"
"params": [
        '[]', 
        '{"clientId": "%HostID%"}'
]



Gruß

Niko

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 14:47
von Anojan
Hallo Niko,

der Aufruf klappt ja, wenn ich ihn per Terminal ausführe. Das heißt, es fehlen keine Parameter.

Ich habe mal das Log-Level vom WINST-Skript auf 9 gesetzt. Man sieht dass er die Parameter richtig übernimmt, aber am Ende mit Error abbricht. Hier das Logging:

[5] [Okt 10 14:39:01:708] [testsoftware] Set $SoftwareList$ = getReturnListFromSection("opsiservicecall_auditSoftwareOnClient")
[5] [Okt 10 14:39:01:708] [testsoftware]
[5] [Okt 10 14:39:01:708] [testsoftware] Execution of opsiservicecall_auditSoftwareOnClient
[8] [Okt 10 14:39:01:708] [testsoftware] Parsing: getparam: []
[8] [Okt 10 14:39:01:708] [testsoftware] Parsing: getparam: {"clientId":"testclient.testdomain.de"}
[6] [Okt 10 14:39:01:708] [testsoftware] "method": "auditSoftwareOnClient_getHashes"
[6] [Okt 10 14:39:01:708] [testsoftware] Calling opsi service at https://10.10.3.198:4447
[9] [Okt 10 14:39:01:708] [testsoftware] Parameters in OpsiMethodCall: []
[9] [Okt 10 14:39:01:708] [testsoftware] Parameters in OpsiMethodCall: {"clientId":"testclient.testdomain.de"}
[9] [Okt 10 14:39:01:708] [testsoftware] Putting to TSuperArray with: "[]"
[9] [Okt 10 14:39:01:708] [testsoftware] Creating TSuperObject with: {"clientId":"testclient.testdomain.de"}
[9] [Okt 10 14:39:01:708] [testsoftware] got omc.jsonUrlString: {"method":"auditSoftwareOnClient_getHashes","params":["[]",{"clientId":"testclient.testdomain.de"}],"id":1}
[9] [Okt 10 14:39:01:708] [testsoftware] got Furl: https://10.10.3.198:4447/rpc
[6] [Okt 10 14:39:01:709] [testsoftware] JSON service request https://10.10.3.198:4447/rpc auditSoftwareOnClient_getHashes
[9] [Okt 10 14:39:01:709] [testsoftware] Putting to TSuperArray with: "[]"
[9] [Okt 10 14:39:01:709] [testsoftware] Creating TSuperObject with: {"clientId":"testclient.testdomain.de"}
[8] [Okt 10 14:39:01:709] [testsoftware] JSON service request Furlhttps://10.10.3.198:4447/rpc
[8] [Okt 10 14:39:01:709] [testsoftware] JSON service request str{"method":"auditSoftwareOnClient_getHashes","params":["[]",{"clientId":"testclient.testdomain.de"}],"id":1}
[9] [Okt 10 14:39:01:801] [testsoftware] Putting to TSuperArray with: "[]"
[9] [Okt 10 14:39:01:801] [testsoftware] Creating TSuperObject with: {"clientId":"testclient.testdomain.de"}
[9] [Okt 10 14:39:01:801] [testsoftware] Putting to TSuperArray with: "[]"
[9] [Okt 10 14:39:01:801] [testsoftware] Creating TSuperObject with: {"clientId":"testclient.testdomain.de"}
[6] [Okt 10 14:39:01:801] [testsoftware] JSON Bench for auditSoftwareOnClient_getHashes "params":["[]",{"clientId":"testclient.optimal-s Start: 14:39:01:708 Time: 00:00:00:093
[9] [Okt 10 14:39:01:801] [testsoftware] Putting to TSuperArray with: "[]"
[9] [Okt 10 14:39:01:801] [testsoftware] Creating TSuperObject with: {"clientId":"testclient.testdomain.de"}
[8] [Okt 10 14:39:01:801] [testsoftware] JSON Call: {"method":"auditSoftwareOnClient_getHashes","params":["[]",{"clientId":"testclient.testdomain.de"}],"id":1} Time: 00:00:00:093
[3] [Okt 10 14:39:01:804] [testsoftware] Error: retrieveJSONObject --- opsi service problem ----> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[3] [Okt 10 14:39:01:804] [testsoftware] Error: -> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}
[6] [Okt 10 14:39:01:804] [testsoftware] retrieving strings from getReturnListFromSection [switch to loglevel 7 for debugging]
[7] [Okt 10 14:39:01:804] [testsoftware] (string 0)-> {"message":"(1054, \"Unknown column '[]' in 'field list'\")","class":"OperationalError"}

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 15:09
von d.oertel
Hi,

das handling der opsi4 Methoden im opsi-winst ist teilweise schwierig und teilweise unmöglich.

Eine Erweiterung der Methoden hierfür steht seit langem auf der todo Liste.

Was willst Du genau erfragen um letztendlich was damit zu erreichen ?

gruß
d.oertel

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 15:21
von Anojan
Hallo,

ich möchte bei den Clients nach erfolgter swaudit per auditSoftwareOnClient_getHashes herauskriegen, ob die Software auf dem Client vorhanden ist und anschließend im configed per Methode setProductState bzw. setProductActionRequest den Installationsstatus bzw. die Produktaktion "setup" setzen.



Danke und Gruß
Anojan

Re: opsiservicecall im WINST-Skript

Verfasst: 10 Okt 2014, 15:34
von d.oertel
Hi,

ok - wenn ich sowas machen wollte würde ich wie folgt vorgehen:

Die swaudit Daten kommen ja aus dem Uninstall Zweig der Registry
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
da kannst Du die Informationen direkt aus lesen ( ein Blick in das swaudit script kann hilfreich sein)

und damit kannst Du weitermachen.

gruß
d.oertel

Re: opsiservicecall im WINST-Skript

Verfasst: 23 Okt 2014, 10:01
von Anojan
Hi,

ich habe es nun wie von dir vorgeschlagen gemacht und es funktioniert.

Danke für den Tip.

Gruß
Anojan