Die CIM-Probe

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 8 Minuten Lesedauer
  • 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:

    Tabelle : 1. CIM-Test
    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.

    Hinweis:
    CimIQL wird „simicle“ ausgesprochen.

    CimIQL-Syntax

    Die CimIQL-Syntax umfasst zahlreiche Elemente, darunter eine Abfrage und verschiedene Token.

    Tabelle : 2. Beschreibungen der Elemente der CimIQL-Syntax
    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.

    Tabelle : 3. CimIQL-Vorgangstoken – Übersicht
    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“

    <Klassenname>{<Schlüsseltoken>,<Parametertoken>,...}
    • 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“

    <Klassenname>{{<Bedingungstoken>,<Parametertoken>,...}}<Array-Index-Token> ODER <Klassenname><Array-Index-Token>
    • 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“

    <Name der Assoziationsklasse>{{<Eigenschaftenfiltertoken>,<Parametertoken>,...}}<Array-Index-Token> ODER <Name der Assoziationsklasse><Array-Index-Token>
    • 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

    ${<Anweisungsname>}
    • 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.

    Die folgenden Token sind Unterkomponenten von Vorgangstoken.
    Tabelle : 4. CimIQL-Komponententoken – Übersicht
    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

    * ODER <Eigenschaftsname>,<Eigenschaftsname>,...
    • 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

    an. (Punkt)
    • Trennt Abfragen
    • Beispiel:
      CIM_ComputerSystem.PrimaryOwnerContact

    Indextoken

    [Index]
    • Verringert die Ergebnisse einer vorhergehenden Abfrage auf ein einzelnes Objekt am angegebenen Ganzzahlindex
    • Dieses Token ist immer optional.
    • Beispiel:
      CIM_ComputerSystem[0].*

    Schlüsseltoken

    <Schlüsselname>='<Wert>'
    • 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

    <Eigenschaftsname><Bedingungsoperator><eingeschlossener Wert>
    • 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

    <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 (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.

    Tabelle : 5. CimIQL-Tutorial
    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.
    1. Server auf alle CIM_ComputerSystem und untergeordneten Elemente abfragen
    2. Ergebnisse basierend auf der Name-Eigenschaft filtern
    3. Zweite Instanz abfragen, die den Filter durchlaufen hat
    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.

    Im Folgenden finden Sie ein kommentiertes Beispiel für ein CimQuery-Batch-Ergebnis.
    <!-- 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>