PowerEdge: Erkundung von WSMAN über Enumeration hinaus

Summary: Lösungen zu Dell Betriebssystemen und Anwendungen auf Dell TechCenter – Projekt Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu und weitere

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

WSMAN ist die gewählte Management-API für Dell iDRAC. Es werden umfangreiche Anstrengungen unternommen, um das Remote-Systemmanagement so umfassend und wie möglich zu gestalten. Nachdem ich das WSMAN-Protokoll für ein Plugin
studiert hatte, stellte ich fest, dass es nach der anfänglichen Aufzählungsaktion komplex wird. Es gibt keine Dokumentation oder Beispiele zum Aufrufen von get/put/create/delete/custom-Aktionen mit den richtigen Schlüsseleigenschaften. Die Hauptquelle für diese Informationen sind die technischen Daten zu WSMAN und technischen Daten zur WSMAN-CIM-Bindung der DMTF, deren Befolgung äußerst langwierig ist. Zur Erinnerung, der Großteil des Inhalts dieses Artikels stammt aus den technischen Dokumenten der DMTF. Dies ist ein Versuch, diese Informationen mit einigen Beispielen (unter Linux) zu verdauen.

 Ich habe bereits ein Whitepaper über die ersten Schritte mit SFCB und openwsman hier veröffentlicht: https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. Wenn Sie neu bei WSMAN und SFCB sind, wäre das PDF ein besserer Ausgangspunkt als dieser Artikel. Wie im obigen Whitepaper befasst sich in diesem Artikel

hauptsächlich mit openwsman- und SFCB CIMOM-Implementierungen: Gibt es nun bei einem WSMAN-Server eine Möglichkeit, alle Komponenten aufzulisten, die über die wsman-API verwaltet werden können? Die meisten WSMAN-Server kommunizieren mit einem CIMOM am Back-End und machen die Managementfunktionen der CIMOMs verfügbar. Das bedeutet, dass die Managementfunktionen eines WSMAN-Servers von den CIM-Anbietern abhängen, die beim CIMOM am Back-End registriert sind. CIMOM verfügt über eine systeminterne Funktion mit dem Namen EnumerateClassNames, die aufgerufen werden kann, um alle Klassen aufzulisten, die bei CIMOM registriert sind.

Cause

Da es in der WSMAN-Spezifikation keine Eins-zu-Eins-Zuordnung für EnumerateClassNames gibt, wird diese Methode wie jede andere benutzerdefinierte Funktion in WSMAN aufgerufen. Beachten Sie, dass dies implementierungsspezifisch ist und für die wsmancli-Implementierung gilt. Dies kann in zukünftigen Versionen abweichen oder aktualisiert werden.

Resolution

Die intrinsische Intelligenz von CIMOM EnumerateClassNames kann wie folgt aufgerufen werden mit wsmancli:

 

wsman invoke -a EnumerateClassNames --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/instrinsic  --namespace=root/cimv2

 

 <s:Body>

    <n1:EnumerateClassNames>

      <n1:name>root/cimv2:CIM_Service</n1:name>

      <n1:name>root/cimv2:Syslog_RecordInLog</n1:name>

      <n1:name>root/cimv2:Linux_SambaValidUsersForShare</n1:name>

       <n1:name>root/cimv2:Linux_BaseBoard</n1:name>

      <n1:name>root/cimv2:Linux_SambaForceUserForShare</n1:name>

      <n1:name>root/cimv2:Linux_Processor</n1:name>

      <n1:name>root/cimv2:CIM_RecordForLog</n1:name>

      <n1:name>root/cimv2:Linux_SambaShareForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaServiceConfigurationForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaHostsForService</n1:name>

      <n1:name>root/cimv2:Linux_SambaForceUserForGlobal</n1:name>

      <n1:name>root/cimv2:CIM_OSProcess</n1:name>

      <n1:name>root/cimv2:CIM_RunningOS</n1:name>...................
 

Die Ausgabe sieht wie oben aus und zeigt an, dass im Namespace root/cimv2, Linux_Processor ist einer der angemeldeten Kurse. Mehrere CIM-Klassen werden vererbt, wenn sich neue Klassen registrieren in root oder cimv2und der Befehl listet alle diese Klassennamen auf. Im Allgemeinen können Sie alle Klassen mit CIM_ -Präfix Alle Klassen mit Linux_ Präfix sind die Klassen, die von Anbietern registriert werden , die auf einem Linux-System installiert sind.
Während der Arbeit mit Dell iDRAC interessieren Sie sich vor allem für Kurse mit DCIM_ prefix.

 Verwenden Sie mit der Liste der Klassennamen das getClass -Funktion zum Extrahieren der Linux_Processor Klassendefinition wie folgt:

 

wsman invoke -a GetClass --hostname=test_host --port=5985 --username=abc --password=password http://schemas.openwsman.org/wbem/wscim/1/intrinsic/Linux_Processor  --namespace=root/cimv2
 

 Mit dem obigen Befehl werden alle Eigenschaften aufgelistet, die im Linux_Processor lokal. Gemeint sind alle Eigenschaften, die von anderen geerbt werden CIM_* Klassen werden in der aktuellen Implementierung nicht aufgeführt. Klassendefinitionen zeigen Methoden, Parameter und Schlüsseleigenschaften an, aber der Befehl gibt nur lokale Eigenschaften zurück, sodass Schlüsseleigenschaften nicht identifizierbar sind. Auch hier handelt es sich um eine Implementierungseinschränkung in wsmancli.

Während GetClass ist ein guter Anfang, seine Ausgabe reicht nicht aus, um wichtige Eigenschaften für das Aufrufen von Get- oder PUT-, Erstellungs- oder nutzerdefinierten Aktionen zu identifizieren.
Welche anderen Techniken können also verwendet werden, um dies zu erreichen? Hier können EPRs helfen.


Die Endpunktreferenz (EPR) ist ein Zeiger auf eine Instanz mit zwei Informationen: ResourceURI und ein Auswahlsatz. Die ResourceURI hat den Klassennamen, aus dem die Instanz erstellt wurde, und der Selector Set listet die Eigenschaften auf, mit denen eine Instanz eindeutig identifiziert werden kann. EPRs einer bestimmten Klasse können mit einem Befehl ähnlich dem folgenden aufgelistet werden:

wsman enumerate -M epr  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor -h test_host-P 5985 -u abc -p password -O out

 <?xml version="1.0" encoding="UTF-8"?>

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">

  <s:Header>

    <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>

    <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>

    <wsa:RelatesTo>uuid:ca52c9e9-cd47-1d47-8003-a52924d9bed4</wsa:RelatesTo>

    <wsa:MessageID>uuid:ca622bb3-cd47-1d47-8097-a52924d9bed4</wsa:MessageID>

  </s:Header>

  <s:Body>

    <wsen:PullResponse>

      <wsen:EnumerationContext>ca4fdd21-cd47-1d47-8095-a52924d9bed4</wsen:EnumerationContext>

      <wsen:Items>

        <wsa:EndpointReference>

          <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

          <wsa:ReferenceParameters>

            <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>

            <wsman:SelectorSet>

              <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

              <wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>

              <wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>

              <wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>

              <wsman:Selector Name="DeviceID">0</wsman:Selector>

            </wsman:SelectorSet>

          </wsa:ReferenceParameters>

        </wsa:EndpointReference>

      </wsen:Items>

    </wsen:PullResponse>

  </s:Body>

</s:Envelope>



Von allen Prozessoren im Zielsystem ist die obige Ausgabe von einem Prozessor.
In der Ausgabe wird der Ressourcen-URI als https://sblim.sourceforge.net/wbem/wscim/1/cim-schema/2/Linux_Processor -Taste und die SelectorSet Listet die Werte von __cimnamespace, SystemCreationClassName, SystemName, CreationClassName, and DeviceID. Dies bedeutet, dass von allen Eigenschaften in der Klasse geerbte und lokal definierte Eigenschaften diese Eigenschaften verwendet werden können, um eine Instanz eindeutig zu identifizieren.


 Sie können also eine gültige Antwort von einem Befehl wie dem folgenden erwarten:

wsman get  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor?SystemCreationClassName="Linux_ComputerSystem",SystemName="localhost.localdomain",CreationClassName="Linux_Processor",DeviceID="3",__cimnamespace="root/cimv2" -h test_host -P 5985 -u abc -p password -O get



 Wenn andere Eigenschaften in der obigen Anfrage verwendet werden, kann der CIMOM im Back-end eine Instanz nicht eindeutig identifizieren. Um benutzerdefinierte Methoden auf einer Instanz auszuführen, verwenden Sie die EPR der Klasse, um Schlüsseleigenschaften für den Methodenaufruf zu identifizieren.


Sie können auch die EPRs einer Zuordnung auflisten. Bei einem Klassennamen kann man nicht herausfinden, ob es sich um einen Standardklassennamen oder eine Zuordnungsklasse handelt. Eine Zuordnungsinstanz verweist auf zwei Instanzen, sodass ihre EPR die EPR der Instanzen oder Objekte enthält, auf die sie sich bezieht. Im Folgenden finden Sie ein Beispiel dafür:

wsman enumerate -M epr  http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor -h test_host -P 5985 -u abc -p password -O out

 <?xml version="1.0" encoding="UTF-8"?>

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration" xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">

  <s:Header>

    <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>

    <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/enumeration/PullResponse</wsa:Action>

    <wsa:RelatesTo>uuid:2efbfcad-cd4b-1d4b-8003-a52924d9bed4</wsa:RelatesTo>

    <wsa:MessageID>uuid:2efc1c6f-cd4b-1d4b-80b3-a52924d9bed4</wsa:MessageID>

  </s:Header>

  <s:Body>

    <wsen:PullResponse>

      <wsen:EnumerationContext>2ef7f6f5-cd4b-1d4b-80b1-a52924d9bed4</wsen:EnumerationContext>

      <wsen:Items>

        <wsa:EndpointReference>

          <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

          <wsa:ReferenceParameters>

            <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_CSProcessor</wsman:ResourceURI>

            <wsman:SelectorSet>

              <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

              <wsman:Selector Name="GroupComponent">

                <wsa:EndpointReference>

                  <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

                  <wsa:ReferenceParameters>

                    <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem</wsman:ResourceURI>

                    <wsman:SelectorSet>

                      <wsman:Selector Name="CreationClassName">Linux_ComputerSystem</wsman:Selector>

                      <wsman:Selector Name="Name">localhost.localdomain</wsman:Selector>

                      <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

                    </wsman:SelectorSet>

                  </wsa:ReferenceParameters>

                </wsa:EndpointReference>

              </wsman:Selector>

              <wsman:Selector Name="PartComponent">

                <wsa:EndpointReference>

                  <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>

                  <wsa:ReferenceParameters>

                    <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor</wsman:ResourceURI>

                    <wsman:SelectorSet>

                      <wsman:Selector Name="SystemCreationClassName">Linux_ComputerSystem</wsman:Selector>

                      <wsman:Selector Name="SystemName">localhost.localdomain</wsman:Selector>

                      <wsman:Selector Name="CreationClassName">Linux_Processor</wsman:Selector>

                      <wsman:Selector Name="DeviceID">0</wsman:Selector>

                      <wsman:Selector Name="__cimnamespace">root/cimv2</wsman:Selector>

                    </wsman:SelectorSet>

                  </wsa:ReferenceParameters>

                </wsa:EndpointReference>

              </wsman:Selector>

            </wsman:SelectorSet>

          </wsa:ReferenceParameters>

        </wsa:EndpointReference>

      </wsen:Items>

    </wsen:PullResponse>

  </s:Body>

</s:Envelope>



Linux_CSProcessor Verknüpfungen Linux_ComputerSystem und Linux_Processor, die zeigt, dass sich Prozessoren in Computersystemen befinden, GroupComponent und PartComponent Abschnitte.

Ich habe Zeit damit verbracht, EPRs und ihre Verwendung für den Zugriff auf Instanzen zu verstehen, weil ich dachte, dass dies anderen helfen könnte. Fühlen Sie sich frei, mir unten Ihre Kommentare oder Vorschläge zu hinterlassen.

Haftungsausschluss:

Der obige Artikel dient nur zu Informationszwecken. Der Inhalt stammt aus meiner Interpretation der genannten Technologien und Terminologien. Diese Informationen werden wie besehen zur Verfügung gestellt und können einige Druckfehler und/oder technische Ungenauigkeiten enthalten.
 

Affected Products

SUSE Linux Enterprise Server 12, Red Hat Enterprise Linux Version 9, Red Hat Enterprise Linux Version 8, SUSE Linux Enterprise Server 15, Ubuntu Server LTS

Products

C Series, HS Series, Modular Infrastructure, Rack Servers, Tower Servers, XE Servers, XR Servers, OEM Server Solutions
Article Properties
Article Number: 000145895
Article Type: Solution
Last Modified: 10 Sept 2026
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.