OPSI API

hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

OPSI API

Beitrag 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 :shock:

Danke schon mal und Grüßle,
hawaii
Zuletzt geändert von hawaii am 02 Jul 2014, 15:32, insgesamt 4-mal geändert.
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: OPSI API

Beitrag 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
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: OPSI API

Beitrag von dkoch »

Hier habe ich ein Beispiel in Ruby wiki/userspace:webservice_corner:ruby-rpc abgelegt.

Authentifiert wird über Basic-Auth
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: OPSI API

Beitrag 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

Code: Alles auswählen

import OPSI
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: OPSI API

Beitrag von hawaii »

Top, danke! Das sieht schon mal gut aus und sollte mir weiterhelfen :-)

Grüßle
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: OPSI API

Beitrag von hawaii »

Jetzt muss ich das Ganze doch noch mal aufmachen :D

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}
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: OPSI API

Beitrag von dkoch »

Schuss ins Blaue ohne es genau zu wissen:

Lass mal

Code: Alles auswählen

'Content-Encoding': 'gzip'
weg.

Sieht so aus als würde hier versucht werden etwas zu decomprimieren, was nicht comprimiert ist
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: OPSI API

Beitrag 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',))
dkoch
Beiträge: 309
Registriert: 25 Nov 2011, 14:03

Re: OPSI API

Beitrag von dkoch »

Code: Alles auswählen

        "method": "authenticated",
        "params": [""],
        "id": 1,
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 ;)
hawaii
Beiträge: 77
Registriert: 03 Dez 2013, 13:32

Re: OPSI API

Beitrag 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.....
Antworten