Die CIM-Probe
Die CIM-Probe verwendet WBEM-Protokolle, um einen bestimmten CIM-Server, den CIM Object Manager, nach einer Reihe von Datenobjekten und Eigenschaften abzufragen.
Anweisungen zum Konfigurieren der Sondenparameter finden Sie unter Probe-Parameter festlegen .
Die folgenden Parameter können an die CIM-Probe übergeben werden:
| Parameter | Beschreibung | Standardwert |
|---|---|---|
| Quelle | [Erforderlich] Der erste Host, zu dem eine Verbindung hergestellt werden soll | Keine |
| port | Der Port, zu dem eine Verbindung hergestellt werden soll. Wenn der Wert leer ist, wird er durch den Parameter „schema“ bestimmt: http = 5988, https = 5989. | 5988 oder 5989 |
| schema | [Erforderlich] Das zu verwendende Schema: „http“ oder „https“. | http |
| namespace | [Erforderlich] Der CIM-Namespace. Kann durch eine Abfrage überschrieben werden. | Keine |
| queries | [Erforderlich] Eine durch Semikolon getrennte Liste von Abfragen der CIM-Probe, für die Ergebnisse verarbeitet und zurückgegeben werden sollen | Keine |
| Wiederholungen | Die Anzahl der Wiederholungsversuche, wenn eine Abfrage aufgrund von Problemen mit der Netzwerkverbindung fehlschlägt | 2 |
| connection_timeout | Die Anzahl von Millisekunden, die eine Probe zum Herstellen einer Verbindung mit einem Server benötigt | 5000 |
| socket_timeout | Die Anzahl von Millisekunden, die eine Probe Daten lesen muss | 5000 |
In CIM Intermediate Query Language (CimIQL) werden Schlüssel, Filter und Dot-Walking verwendet, um CIM-Schemen zu durchlaufen.
Parametererweiterung
Die Abfragesprache CIM unterstützt die mit Standard-SNC vorverarbeitete Erweiterung von Probe-Parametern. Platzieren Sie Variablen in Abfragen, indem Sie wie folgt ihren Namen einkapseln:
${foobar}.CIM_RunningOS[0].Name
CIM_ComputerSystem.${barfoo}Der Text ${foobar} wird durch den Inhalt des an die CIM-Probe übergebenen Probe-Parameters foobar ersetzt. Dasselbe gilt für barfoo.
CIMIQL
CimIQL (CIM Intermediate Query Language) ist eine Zwischensprache, die darauf ausgelegt ist, den Prozess der Abfrage von CIM-Providern zu vereinfachen.
CimIQL unterstützt derzeit den standardmäßigen WBEM-Protokollstapel (Web-Based Enterprise Management). In Zukunft können jedoch weitere wie Web Services-Management (WS-MAN) hinzugefügt werden. Die Syntax der Abfragesprache leiht sich Elemente der Abfragesprache WMI von Microsoft und des wbemcli-Befehls von UNIX. Die Bibliothek CimIQL ist eine reine Java-Implementierung.
CimIQL-Syntax
Die CimIQL-Syntax umfasst zahlreiche Elemente, darunter eine Abfrage und verschiedene Token.
| Element | Beschreibung |
|---|---|
| Erklärung | Das grundlegendste Element von CimIQL ist gültig . Anweisungen enthalten mehrere durch einen Punkt (.) getrennte Abfragen. |
| Abfrage | A Stellt eine einzelne protokollunabhängige Anforderung auf allgemeiner Ebene dar. Jede Abfrage besteht aus verschachtelten Sprachkomponenten und Unterkomponenten, die als Token bezeichnet werden. |
| Token | A Beschreibt einen bestimmten lexikalischen Aspekt der CimIQL-Syntax. |
| Vorgangstoken | Das erste Token jeder Abfrage muss ein sein , Der den gesamten auszuführenden logischen Vorgang darstellt. |
| Komponententoken | A Ist eine Unterkomponente eines Vorgangs-Tokens. |
| Ergebnis | Jede Abfrage wird mit einem Ergebnis kombiniert, das dann als Eingabe für die nächste Abfrage in der Anweisung bereitgestellt wird. A Besteht aus einer Reihe von Objekten und ihren Eigenschaften. |
CimIQL-Vorgangstoken
Die CimIQL-Probe erfordert Vorgangstoken.
Jeder der folgenden Kernvorgänge besitzt ein entsprechendes Gegenstück im Standard CIM Operations over HTTP.
| Rückgabewert | Details | Äquivalent CIM Operation over HTTP |
|---|---|---|
| Klassenobjekt | Get Object Ruft ein einzelnes Objekt einer bestimmten Klasse ab, indem alle eindeutigen Schlüssel (als Schlüsseltoken) und alle optionalen Parametertoken getrennt durch Kommata angegeben werden |
GetInstance |
| Klassenobjekt | Enumerate Objects Ruft Objekte ab, die mit einem Satz von Bedingungstoken und Parametertoken übereinstimmen |
EnumerateInstances |
| Klassenobjekt | Enumerate Associated Objects Ruft Objekte ab, die den einzelnen Ergebnissen der vorherigen Abfrage zugeordnet sind |
Assoziationen |
| Anweisungsergebnisse | Substitution Ein no-op-Token, das die Ergebnisse einer zuvor benannten Anweisung als Eingabe für die nächste Abfrage der eigenen Anweisung verwendet |
Referenz auf Ergebnisse einer benannten Anweisung |
Token „Get Object“
- Ruft ein einzelnes Objekt einer bestimmten Klasse ab, indem alle seine eindeutigen Schlüssel (als Schlüsseltoken) angegeben werden Schlüssel-Token ) Und alle optionalen Parameter-Token , Durch Kommas getrennt. Dieses Token wird auch als bezeichnet .
- <Klassenname> entspricht dem CIM-Klassennamen (Groß-/Kleinschreibung beachten) des gewünschten Objekts. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Schlüssel- und Parametertoken sind von einem Paar geschweiften Klammern { ... } eingeschlossen.
- Dieses Token darf nur als erste Abfrage in einer Anweisung verwendet werden.
- Rückgabe: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
Token „Enumerate Objects“
- Ruft Objekte ab, die mit einem Satz von Bedingungstoken und Parametertoken übereinstimmen Dieses Token wird auch als bezeichnet .
- Bedingungstoken und Parametertoken sind von zwei Paar geschweiften Klammern {{ ... }} eingeschlossen. Die geschweiften Klammern sind optional, wenn keine Bedingungen oder Parameter erforderlich sind.
- <Klassenname> entspricht dem CIM-Klassennamen (Groß-/Kleinschreibung beachten) der gewünschten Objekte. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Das Indextoken ist optional.
- Dieses Token darf nur als erste Abfrage in einer Anweisung verwendet werden.
- Rückgabe: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{{Name!='runtime'}}.*
Token „Enumerate Associated Objects“
- Ruft Objekte ab, die den einzelnen Ergebnissen der vorherigen Abfrage zugeordnet sind
- Bedingungstoken und Parametertoken sind von zwei Paar geschweiften Klammern {{ ... }} eingeschlossen. Die geschweiften Klammern sind optional, wenn keine Eigenschaftenfilter oder Parameter erforderlich sind.
- Der <Name der Assoziationsklasse> ist der Name der M:N- oder 1:N-Klasse, die zwei Objekte miteinander verknüpft. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Das <Parametertoken> ResultClass kann angegeben werden, um Ergebnisse basierend auf dem Klassennamen des resultierenden Objekts zu filtern.
- Das Indextoken ist optional.
- Dieses Token darf nicht als erste Abfrage in einer Anweisung verwendet werden.
- Rückgabe: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{{Name='runtime'}}[2].*
Substitutionstoken
- Ein no-op-Token, das die Ergebnisse einer zuvor benannten Anweisung als Eingabe für die nächste Abfrage der eigenen Anweisung verwendet
- Rückgabe: keine
- Beispiel:
$(lastComputer).ElementName
CimIQL-Komponententoken
Die CimIQL-Probe erfordert Komponententoken, die Unterkomponenten von operativen Token sind.
| Token | Details |
|---|---|
| Eigenschaften-Token | * ODER <Eigenschaftsname>,<Eigenschaftsname>,... Gibt an, welche Eigenschaften für jedes Objekt des endgültigen Ergebnissatzes zurückgegeben werden müssen |
| Abfragetrennzeichen-Token | an. (Punkt) Trennt Abfragen |
| Index-Token | [Index] Verringert die Ergebnisse einer vorhergehenden Abfrage auf ein einzelnes Objekt am angegebenen Ganzzahlindex |
| Schlüssel-Token | <Schlüsselname>='<Wert>' Gleicht eine Objekteigenschaft, die als Schlüssel festgelegt ist, mit einem genauen Wert ab |
| Bedingungstoken | <Eigenschaftsname><Bedingungsoperator><eingeschlossener Wert> Gleicht eine einzelne Eigenschaft eines Objekts basierend auf der angegebenen Bedingung ab |
| Parameter-Token | <Parametername>:'<Wert>' Übergibt einen Parameter nach <Parametername> an den aufgerufenen Vorgang. Der Parameter kann je nach Parameter während der CimIQL-Vorverarbeitung oder vom CIMOM auf Anforderung verwendet werden. |
Eigenschaftstoken
- Gibt an, welche Eigenschaften für jedes Objekt des endgültigen Ergebnissatzes zurückgegeben werden müssen
- Mit dem Platzhalter * werden alle verfügbaren Eigenschaften zurückgegeben. Andernfalls wird jeder gewünschte Eigenschaftsname in einer kommagetrennten Liste bereitgestellt.
- Dieses Token ist am Ende jeder Anweisung erforderlich.
- Beispiel:
CIM_ComputerSystem[0].*
Abfragebegrenzertoken
- Trennt Abfragen
- Beispiel:
CIM_ComputerSystem.PrimaryOwnerContact
Indextoken
- Verringert die Ergebnisse einer vorhergehenden Abfrage auf ein einzelnes Objekt am angegebenen Ganzzahlindex
- Dieses Token ist immer optional.
- Beispiel:
CIM_ComputerSystem[0].*
Schlüsseltoken
- Gleicht eine Objekteigenschaft, die als Schlüssel festgelegt ist, mit einem genauen Wert ab
- <Schlüsseltoken> entspricht dem Namen der als Schlüssel verwendeten Eigenschaft.
- Beispiel:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
Bedingungstoken
- Gleicht eine einzelne Eigenschaft eines Objekts basierend auf der angegebenen Bedingung ab
- <Eigenschaftsname> entspricht dem Namen der Eigenschaft für den Abgleich.
- Der <Bedingungsoperator> legt fest, wie der tatsächliche Wert einer Eigenschaft mit dem erwarteten Wert verglichen wird. Die verfügbaren Operatoren sind gleich (=) und ungleich (! =).
- Der <eingeschlossene Wert> muss einer der folgenden Möglichkeiten entsprechen:
- Literaler Wert, in einfachen Anführungszeichen '...' Beispiel: foo='bar'
- Regulärer Ausdruck, zwischen Schrägstrichen /.../ Beispiel: foo=/bar.*/
- Beispiel:
CIM_ComputerSystem{{Name!='runtime'}}.*
Parametertoken
- Übergibt einen Parameter nach <Parametername> an den aufgerufenen Vorgang. Der Parameter kann je nach Parameter während der CimIQL-Vorverarbeitung oder vom CIMOM (Common Information Model Object Manager) auf Anforderung verwendet werden.
- Beispiel:
CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*
CimIQL-Tutorial
Dies ist ein Tutorial anhand von Beispielen, bei dem jedes Beispiel auf dem vorherigen Beispiel aufbaut.
| Reihenfolge | CimIQL-Anweisung | Ergebnis |
|---|---|---|
| 1 | CIM_ComputerSystem[0].* | Ruft das erste Ergebnis aller Instanzen von CIM_ComputerSystem und dessen untergeordnete Elemente ab. Ruft alle Eigenschaften ab |
| 2 | CIM_ComputerSystem.PrimaryOwnerContact | Ruft alle Instanzen von CIM_ComputerSystem und deren untergeordnete Elemente ab. Ruft nur eine Eigenschaft ab: PrimaryOwnerContact |
| 3 | CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* | Ruft eine einzelne eindeutige Instanz von CIM_ComputerSystem und deren untergeordnete Elemente ab. Alle Schlüsseltoken müssen im Identitätstoken angegeben werden. |
| 4 | CIM_ComputerSystem{{Name!='runtime'}}.* | Ruft alle Instanzen und untergeordneten Elemente von CIM_ComputerSystem ab, die nicht die Name-Eigenschaft „runtime“ aufweisen. Das Filtertoken {{ }} filtert Instanzen heraus, die nicht alle der angegebenen Eigenschaften/Schlüssel enthalten. |
| 5 | CIM_ComputerSystem{{Name=/^run.*$/}}.* | Ruft alle Instanzen und untergeordneten Elemente von CIM_ComputerSystem ab, deren Wert dem regulären Ausdruck zwischen den Schrägstrichen / / entspricht.
Hinweis: Der reguläre Ausdruck erfordert keine einfachen Anführungszeichen. Das Filtertoken {{ }} filtert Instanzen heraus, die nicht alle der angegebenen Eigenschaften/Schlüssel enthalten. |
| 6 | CIM_ComputerSystem{{Name='runtime'}}[2].* | Ruft das zweite Ergebnis aller Instanzen von CIM_ComputerSystem und dessen untergeordnete Elemente ab, wobei die Instanzen die Name-Eigenschaft „runtime“ aufweisen. Die Reihenfolge der Vorgänge entspricht der Abfragesyntax.
|
| 7 | CIM_ComputerSystem.CIM_RunningOS[0].Name | Ruft die Eigenschaft Name für die erste CIM_OperatingSystem-Instanz jeder CIM_ComputerSystem-Instanz ab. Das mittlere Token, CIM_RunningOS, ist der Name der Assoziationsklasse, nicht das Endergebnis. |
| 8 | CIM_ComputerSystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name | Ruft die Eigenschaft Name für die erste CIM_OperatingSystem-Instanz von jeder CIM_ComputerSystem-Instanz ab, wobei alle CIM_OperatingSystem-Instanzen eine Name-Eigenschaft haben, die „CentOS“ enthält. |
CimIQL-Ergebnisse
Ergebnisse der CIM-Probe werden als XML-Dokument eingebettet im <output>-Element an den Probe-Sensor übergeben.
<!-- document root -->
<cimqueryset>
<!-- A single query and query result. Multiple <cimquery> tags may be provided. -->
<cimquery>
<!-- The original query, enclosed by CDATA. -->
<query><!CDATA[[>CIM_ComputerSystem[0].PrimaryOwnerContact<! ]]></query>
<!-- The resulting data is enclosed within a single <result> tag. -->
<result>
<!-- A single class instance result. Multiple <instance> tags may be provided.
Special tags are prefixed with an underscore character. -->
<instance>
<!-- The instance's CIM classname -->
<_classname>Linux_ComputerSystem</_classname>
<!-- A set of this instances identifying keys. Always provided, regardless of property filters.
Within here, each key is provided as <KeyName>VALUE</KeyName> with the VALUE enclosed as CDATA. -->
<_key>
<CreationClassName><![CDATA[Linux_ComputerSystem]]></CreationClassName>
<Name><![CDATA[runtime]]></Name>
</_key>
<!-- Each property that matches the query's property filter will be provided here, in the same format as keys;
As <PropertyName>VALUE<PropertyName> where VALUE is enclosed as CDATA -->
<PrimaryOwnerContact><![CDATA[root@runtime]]></PrimaryOwnerContact>
</instance>
</result>
</cimquery>
</cimqueryset>