跳转至主要内容
  • 快速、轻松地下订单
  • 查看订单并跟踪您的发货状态
  • 创建并访问您的产品列表

Numaralandırmanın ötesinde WSMAN'ı keşfetme

摘要: Dell TechCenter'da Dell İşletim Sistemi ve Uygulama Çözümleri - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu ve daha fazlası

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

WSMAN, Dell iDRAC için seçilen yönetim API'sidir ve uzaktan sistem yönetimini mümkün olduğunca kapsamlı ve kolay hale getirmek için geniş kapsamlı çalışmalar yürütülmektedir. Yakın zamanda bir süre WSMAN protokolünü anlamaya çalıştım ve ilk wsman numaralandırma işleminden sonra WSMAN protokolü biraz karmaşıklaşıyor. Doğru ana özelliklerle get/put/create/delete/custom İşlemlerinin nasıl çağrılacağı konusunda kolay bir belge/örnek yok.  Bu bilginin birincil kaynağı, takip etmek için fazla uzun olan DMTF'nin WSMAN teknik özelliği ve WSMAN-CIM bağlantısı teknik özelliğidir. Yine bu makale içeriğinin çoğunluğu DMTF teknik özellik belgelerinden gelmektedir. Burada bu bilgileri (Linux üzerinde) bazı örneklerle kolay anlaşılır bir hale getirmeye çalışıyorum.

 SFCB ve openwsman kullanmaya başlama hakkında paylaştığım teknik rapora şuradan ulaşabilirsiniz: https://linux.dell.com/files/whitepapers/WBEM_based_management_in_Linux.pdf. WSMAN/SFCB konusunda yeniyseniz söz konusu pdf dosyası bu makaleden daha iyi bir başlangıç noktası olacaktır. Yukarıdaki teknik raporda olduğu gibi, bu makalede de öncelikle openwsman ve SFCB CIMOM uygulamalarıyla ilgileneceğiz.

 Bir WSMAN sunucusu için wsman API'siyle yönetilebilecek tüm bileşenleri listelemenin bir yolu var mıdır? WSMAN sunucularının çoğu arka uçta bir CIMOM ile iletişim kurar ve CIMOM'ların yönetim işlevlerini açığa çıkarır. Bunun anlamı, bir WSMAN sunucusunun yönetim özelliklerinin arka uçta CIMOM'a kayıtlı CIM sağlayıcılarına bağlı olduğudur. CIMOM'da, CIMOM'a kayıtlı tüm sınıfları listelemek için çağrılabilecek, EnumerateClassNames adında yerleşik bir işlev vardır.

原因

WSMAN özelliğinde EnumerateClassNames için bire bir eşleme olmadığından, bu yöntem WSMAN'deki diğer özel işlevler gibi çağrılır. Lütfen bunun uygulamaya özel olduğunu ve wsmancli'nin uygulanması için geçerli olduğunu unutmayın. Gelecek sürümlerde bu farklı olabilir veya güncelleştirilebilir.

解决方案

CIMOM'un yerleşik EnumerateClassNames işlevi, wsmancli ile şu şekilde çağrılabilir:
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>...................
 
Çıktı yukarıdaki gibi görünür ve root/cimv2 ad alanında Linux_Processor öğesinin kayıtlı sınıflardan biri olduğunu gösterir. root/cimv2 ad alanına yeni sınıflar kaydedildiğinde devralınan bir dizi CIM sınıfı olur ve yukarıdaki komut tüm bu sınıf adlarını da listeler. Genel bir kural olarak, ön eki CIM_ olan tüm sınıfları yok sayabilirsiniz. Linux_ ön ekine sahip tüm sınıflar, bir Linux sistemine yüklenen sağlayıcılar tarafından kaydedilen sınıflardır. Dell idrac ile çalışırken çoğunlukla ön eki DCIM_ olan sınıflarla ilgilenirsiniz.

 Artık elinizde tüm sınıf adlarının listesi olduğuna göre, getClass yerleşik işlevini kullanarak Linux_Processor sınıfının tanımını aşağıdaki gibi ayıklayabilirsiniz:
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
 
 Yukarıdaki komut, Linux_Processor içerisinde yerel olarak tanımlanan tüm özellikleri listeler. Diğer CIM_* sınıflarından devralınan diğer hiçbir özelliğin mevcut uygulamayla listelenmediğini ifade eder. Genellikle bir Sınıfın tanımından sınıfta hangi yöntemlerin kullanıldığını, bu yöntemlere hangi parametrelerin iletilmesi gerektiğini ve sınıfın hangi özelliklerinin önemli özellikler olduğunu vb. anlayabilirsiniz. Ancak yukarıdaki komut yalnızca Yerel özellikleri döndürdüğünden, sınıftaki ana özellikler tespit edilemez. Şu anda bu da wsmancli'deki bir uygulama sınırlamasıdır.

Dolayısıyla, GetClass işlevi iyi bir başlangıç noktası olsa da; çıktısı, get/put/create/custom eyleminin çağrılabilmesi için sınıfın hangi özelliklerinin ana özellikler olarak kullanılabileceğini belirlemede yeterli değildir. Bu durumda, bunu gerçekleştirmek için diğer hangi teknikler kullanılabilir? EPR'ler bu noktada yardımcı olabilir.


EPR (Uç Nokta Referansı); ResourceURI ve Seçici Kümesi olmak üzere iki parça bilgi içeren bir örnek işaretçisidir. ResourceURI, örneğin kendisinden oluşturulduğu sınıf adını içerir ve Seçici Kümesi, bir örneğin benzersiz bir şekilde tanımlanması için kullanılan özellikleri listeler. Belirli bir sınıftaki EPR'ler şuna benzer bir komutla numaralandırılabilir:
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>
 Hedef sistemdeki tüm işlemciler arasından, yukarıdaki çıktı yalnızca bir işlemciye aittir. Çıktıda resourceURI http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_Processor olarak listelenir ve SelectorSet; __cimnamespace,  SystemCreationClassName, SystemName, CreationClassName ve DeviceID öğelerini listeler. Bunun anlamı, Linux_Processor sınıfındaki tüm özellikler (devralınan ve yerel olarak tanımlanan) arasından bu özelliklerin bir örneği benzersiz bir şekilde tanımlamak için kullanılabileceğidir.

 Dolayısıyla, şunun gibi bir komuttan geçerli bir yanıt bekleyebilirsiniz:
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
 Yukarıdaki istekte başka özellikler kullanılırsa arka uçtaki CIMOM bir örneği benzersiz bir şekilde tanımlayamaz. Benzer şekilde, örnek olarak çalıştırılması gereken özel yöntemler olursa bir yöntemi çağırmak için kullanılabilecek ana özellikleri belirlemek için sınıfın EPR'si kullanılabilir.

Bir ilişkilendirmenin EPR'lerini de numaralandırabilirsiniz. Bir sınıf adı verildiğinde, bunun standart bir Sınıf adı mı, ilişkilendirme sınıfı mı olduğu anlaşılamaz. Bir ilişkilendirme örneğinin iki örneğe iki işaretçisi olduğundan, bir ilişkilendirme EPR'sinde, ilişkilendirmenin başvurduğu örneklerin/nesnelerin EPR'leri olur. Bunun bir örneği aşağıda verilmiştir:
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; Linux_ComputerSystem ve Linux_Processor sınıfları arasında, İşlemcilerin Bilgisayar Sistemlerinde ve dolayısıyla GroupComponent ve PartComponent bölümlerinde yer aldığı ilişkisini kuran bir ilişkilendirmedir.

Diğerlerinde de işe yarayabileceğini düşünerek bir süre EPR'leri ve bunların ayrı ayrı örneklere erişmek için nasıl kullanılabileceğini anlamaya çalıştım. Yorumlarınızı/önerilerinizi aşağıya bırakabilirsiniz.

Sorumluluk reddi:

Yukarıdaki makale yalnızca bilgilendirme amaçlıdır. İçeriği, söz konusu teknolojilerin/terminolojilerin tarafımca yorumlanmasına dayalıdır. Bu bilgiler olduğu gibi verilmiştir ve yazım hataları ve/veya teknik hatalar içerebilir.

受影响的产品

Ubuntu Server LTS
文章属性
文章编号: 000145895
文章类型: Solution
上次修改时间: 11 6月 2024
版本:  4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。