Da ich beruflich sehr viel mit OTRS zu tun habe, will ich heute mal ein kleines Skript zeigen, womit man die API der OTRS CMDB testen kann. Dies kann unter anderen hilfreich sein, wenn man Probleme mit Fremdmodulen hat, die Informationen in die OTRS CMDB hinzufügen oder auslesen will.
Webservice
Um die API Funktion zur Verfügung zu stellen, muss diese mit einem Webservice bereitgestellt werden. So einen Webservice müssen wir nun anlegen. Dafür gehen wir in dem Admin Bereich von OTRS. Hier finden wir im Bereich Systemverwaltung den Punkt Webservices.
Auf der linken Seite wählen wir Wevservice hinzufüge.
Hier können wir nun den Webservice wie auf dem Bild zu sehen einrichten
Anschließend wird der Webservice gespeichert und erneut geöffnet. Wir haben nun bei dem Punkt Netzwerk-Transport einen Konfigurationsbutton. Dieser wird jetzt ausgewählt.
In dem Fenster das sich jetzt öffnet, muss die Einstellung entsprechend dem Bild gesetzt werden.
Jetzt kann alles gespeichert werden.
Das Skript
Bei dem Skript zum Testen der durch den Webservice bereitgestellten API Funktion handelt es sich um ein PHP Skript. Dieses soll uns alle Objekte der CMDB Kategorie Computer zurückgeben (Wenn welche angelegt sind).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!--?<span class="hiddenSpellError">php</span> //OTRS URL http:///otrs/nph-genericinterface.pl/Webservice//// $otrs_url = 'http://192.168.10.63/otrs/nph-genericinterface.pl/Webservice/TestService/SearchCI/root@localhost/test123'; $l_data = array( 'ConfigItem' => [ 'Class' => 'Computer', ] ); $p_data = json_encode($l_data); /* CURL Request */ $l_curl_handle = curl_init( $otrs_url ); curl_setopt($l_curl_handle, CURLOPT_POST, 1);--> curl_setopt($l_curl_handle, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($l_curl_handle, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($l_curl_handle, CURLOPT_POSTFIELDS, $p_data); curl_setopt($l_curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($l_curl_handle, CURLOPT_USERAGENT, 'API Tester'); curl_setopt($l_curl_handle, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json' )); $l_content = curl_exec($l_curl_handle); curl_close($l_curl_handle); print_r($l_content); $l_content = json_decode($l_content); echo ' |
1 2 3 | '; var_dump($l_content); echo ' |
1 | '; ?> |
Wichtig ist hierbei eigentlich nur die dritte Zeile. Diese muss entsprechend des Kommentars ausgefüllt werden. Anschließend kann das Skript ausgeführt werden.
Die Ausgabe sollte dann so aussehen, wenn es zwei Computer.
1 2 | php cmdbSearch.php {"ConfigItemIDs":["1","2"]} |
1 2 3 4 5 6 7 8 9 | object(stdClass)#1 (1) { ["ConfigItemIDs"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "2" } } |
Eine aktuelle Version des Skriptes findet ihr immer im entsprechenden Github Repo: https://github.com/Modius22/OTRS-Scripts
Ich empfehle nicht Benutzernamen und Passwort, wie vorgeschlagen, in der URL zu übergeben. Die wird nämlich i.d.R. in den Logdateien des Webserves gespeichert. Es sollte problemlos möglich sein mit den Sessions der Ticketconnectors zu arbeiten.
Hallo Roy,
bei dem Einsatz eines produktiven Skriptes Stimme ich dir da zu. Dieses dient nur dazu, Fehler zu debuggen.
Gruß
Christian