LinkTicketWithCI -> Verbesserung

Allgemein Fragen, deutsche News, Ankündigungen & Events zu Znuny
Locked
Christoph89
Znuny newbie
Posts: 19
Joined: 16 Apr 2014, 15:27
Znuny Version: 3.3.6

LinkTicketWithCI -> Verbesserung

Post by Christoph89 »

Hallo zusammen,

ich bin gerade erst registriert, habe aber schon eine garnicht so einfach zu beantwortende Frage ;-)
Ich nutze OTRS mit dem SystemMonitoring Modul und ITSM.

Ich würde gerne die "LinkTicketWithCI" Option verbessern, so dass das passende CI direkt bei der ersten Mail gelinkt wird.
Mir ist klar, dass das so in diesem Modul nicht funktioniert, da das Ticket erst erstellt wird, man zum linken aber bereits die TicketID braucht.

Nun war meine Idee mit dem GenericAgent ein Command auszuführen, dass bei einem neu erstellten Ticket vom passenden Absender einen Befehl zum verknüpfen ausführt.

Da dies über die GUI nicht möglich ist muss ich dazu wohl ein kleines Skript schreiben, um die nötigen Befehle abzusetzen. Übergeben wird ja als Argument auch die TicketID.
Hat jemand eine Idee wie man da am besten vorgeht? Oder gibt es sowas vllt sogar schon?

In unserem Fall ist das echt praktisch, da wir sehr viele Assets verwalten und wir so direkt im Ticket sehen welche Hardware betroffen ist und damit auch wissen welche Kunden / Standorte etc ...


LG Christoph
Christoph89
Znuny newbie
Posts: 19
Joined: 16 Apr 2014, 15:27
Znuny Version: 3.3.6

Re: LinkTicketWithCI -> Verbesserung

Post by Christoph89 »

So es ist ja ein leichtes ein GenericAgent Job hinzuzufügen der auf jedem Ticket läuft, das den Absender vom Nagios besitzt.

Der Logfile zeigt auch an, dass der Job ausgeführt wird.

Code: Select all

[Notice][Kernel::System::GenericAgent::JobRun] Run GenericAgent Job 'TestJob' from db
Ich habe nun ein seeehr einfaches bash script zum testen angelegt:

Code: Select all

#!/bin/bash
# declare STRING variable
STRING="New Agent Run: "
#print variable on a screen
echo $STRING $1 $2 >> /var/log/test.log
sowohl das script als auch den logfile habe ich mit vollen rechten vergeben und dem Besitzer otrs und der Gruppe www-data zugewiesen.

Dennoch wird das script nicht ausgeführt.

Im Generic Agent steht unter CMD:

Code: Select all

/bin/bash /opt/otrs/TEST/test.bash
wenn ich das in der Konsole ausführe (als Nutzer otrs) wird der Logdatei richtig ein Eintrag hinzugefügt ...

Ich kann nicht nachvollziehen wo nun der Fehler liegt?
Hat jemand eine Idee?


LG Christoph

EDIT:

Die Ticketfiltereinstellungen haben das ausführen verhindert. Einfach nur die Absender-Mailadresse bei "von" einzutragen war nicht der richtige Ansatz. Bei mir funktioniert es nun mit folgendem Eintrag in "von":

Code: Select all

"*nagios@xxx.de*"
Christoph89
Znuny newbie
Posts: 19
Joined: 16 Apr 2014, 15:27
Znuny Version: 3.3.6

Re: LinkTicketWithCI -> Verbesserung

Post by Christoph89 »

Ich habe keinen blassen Schimmer von der Programmierung eines Perl Moduls für OTRS, daher habe ich erstmal, quasi als Machbarkeitsstudie ein kleines Bash script geschrieben, dass ein SQL statement ausführt um die Nagiosmeldung mit dem entsprechenden CI zu verbinden.

Code: Select all

#!/bin/bash
mysql -u "otrs" -pXXXXXXXXX otrs -e "INSERT INTO link_relation SET source_object_id='1', target_object_id='2', source_key='$2', target_key=(SELECT c.id FROM configitem c, configitem_version v WHERE c.last_version_id = v.id AND v.name=(SELECT v.value_text FROM otrs.dynamic_field d, otrs.dynamic_field_value v WHERE d.id = v.field_id AND v.object_id = '$2' AND d.name = 'TicketFreeText1')), type_id='7', state_id='1', create_time=NOW(), create_by='1';"
Wenn jemand ein gutes Tutorial oder auch nur eine Befehlsreferenz zur Programmierung eines OTRS Moduls / Plugins bzw zur Nutzung der entsprechenden Objekte kennt, dann wäre ich sehr erfreut über einen Link. Dann könnte ich das Ganze ein wenig sauberer programmieren. Momentan ist es nur ein "dirty hack" der nur zum testen dient.

Zur Funktionsweise:
  • 1) es wird eine MySQL Konsole mit dem User otrs und dem Passwort XXXXXXXXX geöffnet

    2) Der Tabelle link_relations wird ein neuer Link hinzugefügt: Quelle der Verknüpfung ist vom Typ 1 (Ticket) Ziel der Verknüpfung ist vom Typ 2 (ITSMConfigItem), Quelle wird durch die Ticket ID identifiziert, die vom GernericAgent übergeben wird. Das Ziel wird identifiziert durch die ID des ConfigItems. Dazu müssen zunächst nur die aktuellen Einträge betrachtet werden (JOIN über configitem und configitem_version)

    3) Weiterhin muss der Name des CIs gleich dem TicketFreeText1 value des Tickets sein. Dieses wird durch das Monitoring Modul gesetzt.
Ich kann nicht garantieren, dass es so auch bei anderen funktioniert, da viele IDs fest eingestellt sind, ich mir aber nicht sicher bin, ob dieses bei einer anderen Installation identisch sein müssen.

Vllt kann jemand was mit dem Schnippsel anfangen. Wenn ja würde ich mich freuen, wenn Ihr kurz bescheid sagt, da ich evtl falls ich einen Zugang zum Thema finde das ganze als Modul einbinde. Dann könnte ich das zur Verfügung stellen.
Locked