Dieses müßte ich nun umwandeln in ein 2 dimensionales Array ( das wäre noch lösbar ) und dann
muss ich quasi jedem Hostnamen eine Variable im IPS zuordnen. Ich denke das könnte man auch mit einem Array machen, wo ich den Namen einer Variablen zuweise oder gibt es da einen eleganteren Weg.
Bin leider nicht der PHP Profi, vielleicht kann mir ja jemand nur einen Anstoß geben :-).
Warum so umständlich? Lass das Array doch wie es ist.
Mach einfach eine FOR-Schleife in einer FOR-Schleife. Die 1. Schleife geht das Array durch auf Ebene1 (0,1,2,…) und die 2. Schleife geht dann die einzelnen Einträge (SERVICE_NAME, HOST_NAME, …) durch.
Und dann jeweils durch eine Funktion wie diese hier schicken:
…mit $VarName z.B. den Key von „HOST_NAME“ usw. (Die Funktion gibt dir die Variablen ID zurück und diese kannst du dann einfach mit SetValue und dem Wert von „HOST_NAME“ direkt aus dem Array füllen)
Weiteres Beispiel: $array[0][„HOST_NAME“] ist der Wert „Zarafa“
Edit: Alternativ kannst du auch eine komplette Funktion schreiben, welche die Variable erstellt, falls nicht vorhanden und direkt mit Daten befüllt bzw. die Daten aktualisiert.
Klingt kompliziert, ist es aber eigentlich gar nicht
danke nochmals für deine Hilfe. Ich hab eine etwas andere Lösung gefunden, aber das Wichtigste ist , es
funktioniert . Wenn man einmal wieder drin ist gehts …
Ist übrigens die erste Routine zur Darstellung von Checks aus Icinga2 in IPS / braucht kein Mensch im Heimnetz, aber falls der Junior Probleme hat, sehe ich wenigstens woran es liegt .
hier nur der Auszug der Schleife :
foreach ($array["result"] as $key1 => $value1) {
$VarID=CreateVariableByName ($ParentID,$value1["HOST_NAME"],0);
if ($value1["SERVICE_CURRENT_STATE"] == 0)
{SetValueBoolean($VarID,true);
}
else
{SetValueBoolean($VarID,false);
}
}