Seite 1 von 2
OPSI API
Verfasst: 27 Jun 2014, 15:29
von hawaii
Hallo @ll,
besitzt OPSI eine Web API über die ich von einem externen Skript Informationen vom System bekommen kann?
Zum Beispiel sowas wie "Gib mir die Mac Adresse zu folgendem Clientrechner"...
Irgendwie find ich da nichts dazu oder vielleicht stell ich mich an einem Freitag Nachmittag auch echt blöd an
Danke schon mal und Grüßle,
hawaii
Re: OPSI API
Verfasst: 27 Jun 2014, 16:38
von hawaii
Bin jetzt schon einen Schritt weiter und hab verstanden, dass das Ganze über json-rpc läuft, allerdings verstehe ich nicht ganz wie ich mich dem RPC Server gegenüber authentifizieren soll.
Gibt es dafür eine eigene Methode oder wie läuft das?
Hat hier schon jemand Erfahrung?
Grüßle,
Kai
Re: OPSI API
Verfasst: 27 Jun 2014, 19:16
von dkoch
Hier habe ich ein Beispiel in Ruby
wiki/userspace:webservice_corner:ruby-rpc abgelegt.
Authentifiert wird über Basic-Auth
Re: OPSI API
Verfasst: 30 Jun 2014, 09:54
von n.wenselowski
Hallo,
es gibt eine API, die unter
https://opsi.server.fqdn:4447/rpc angesprochen werden kann. Eine Übersicht über mögliche Methoden gibt es unter
https://opsi.server.fqdn:4447/interface, das ist quasi der interaktive Modus

Die API spricht JSON-RPC und man muss sich zur Kommunikation beim Server authentifizieren.
Gruß
Niko
Re: OPSI API
Verfasst: 30 Jun 2014, 14:10
von hawaii
Top, danke! Das sieht schon mal gut aus und sollte mir weiterhelfen
Grüßle
Re: OPSI API
Verfasst: 01 Jul 2014, 16:01
von hawaii
Jetzt muss ich das Ganze doch noch mal aufmachen
Versuche nen json-rpc call gerade in python zu bauen und bekomme aber nur einen Fehler als Antwort zurück.
Irgendwie kann ich damit aber so gar nix anfangen....
Hat hier vielleicht jemand noch 'ne Idee wo das Problem hängen könnte?
Code: Alles auswählen
import requests
import json
def main():
url = "https://user:password@opsi:4447/rpc"
headers = {'content-type': 'application/json','Content-Encoding': 'gzip'}
payload = {
"method": "authenticated",
"params": [""],
"id": 1,
}
response = requests.post(
url, data=json.dumps(payload), headers=headers, verify=False).json()
print response
if __name__ == "__main__":
main()
Leider ist das einzige was ich zurückbekomme:
Code: Alles auswählen
{u'error': {u'message': u'Error -3 while decompressing data: incorrect header check', u'class': u'error'}, u'result': None, u'id': None}
Re: OPSI API
Verfasst: 01 Jul 2014, 16:09
von dkoch
Schuss ins Blaue ohne es genau zu wissen:
Lass mal
weg.
Sieht so aus als würde hier versucht werden etwas zu decomprimieren, was nicht comprimiert ist
Re: OPSI API
Verfasst: 01 Jul 2014, 16:11
von hawaii
Ne, das is es leider nicht, wenn ich das weg lasse, dann fällt er direkt auf die Fre....
Code: Alles auswählen
raise ContentDecodingError(e)
requests.exceptions.ContentDecodingError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing: incorrect header check',))
Re: OPSI API
Verfasst: 01 Jul 2014, 16:27
von dkoch
Ist keine gültige methode.
http://download.uib.de/opsi4.0/doc/html ... cture-opsi
Code: Alles auswählen
"method": "product_getHashes",
"params": [""],
"id": 1,
schon. Hat aber mit der Kompression leider nichts zu tun

Re: OPSI API
Verfasst: 01 Jul 2014, 16:33
von hawaii
Unter
https://opsi:4447/interface ist diese Methode aber gelistet und funktioniert auch, ich dachte diese Methoden sind alle verfügbar?
Leider bringt auch das nutzen der von dir angegebenen Methode keinen Erfolg.
Hm, ich steh echt irgendwie auf dem Schlauch gerade.....