CIM 프로브
CIM 프로브는 WBEM 프로토콜을 사용하여 데이터 객체 및 속성 세트에 대해 특정 CIM 서버인 CIM Object Manager를 쿼리합니다.
프로브 매개변수 구성에 대한 지침은 프로브 매개변수 설정 문서를 참조하십시오.
다음 매개변수를 CIM 프로브에 전달할 수 있습니다.
| 매개변수 | 설명 | 기본값 |
|---|---|---|
| source | [필수] 연결할 초기 호스트입니다. | 없음 |
| port | 연결할 포트입니다. 비어 있는 경우 값은 http = 5988, https = 5989와 같은 "schema" 매개변수에 의해 결정됩니다. | 5988 또는 5989 |
| schema | [필수] 사용할 스키마: '"http"' 또는 '"https"' | http |
| namespace | [필수] CIM 네임스페이스입니다. 쿼리에 의해 무효화될 수 있습니다. | 없음 |
| queries | [필수] 결과를 처리하고 반환할 CIM 프로브 쿼리의 세미콜론으로 구분된 목록입니다. | 없음 |
| retries | 네트워크 연결 문제로 인해 실패하는 경우 쿼리를 다시 시도할 횟수입니다. | 2 |
| connection_timeout | 프로브가 서버에 연결하는 시간(밀리초)입니다. | 5000 |
| socket_timeout | 프로브가 데이터를 읽어야 하는 시간(밀리초)입니다. | 5000 |
CimIQL(CIM Intermediate Query Language)은 키, 필터 및 닷워킹을 사용하여 CIM 스키마를 통과합니다.
매개변수 확장
CIM 쿼리 언어는 표준 SNC 전처리 프로브 매개변수 확장을 지원합니다. 다음과 같이 변수 이름을 캡슐화하여 쿼리에 변수를 넣습니다.
${foobar}.CIM_RunningOS[0].Name
CIM_ComputerSystem.${barfoo}${foobar} 텍스트는 CIM 프로브에 전달된 foobar 프로브 매개변수의 내용으로 대체됩니다. barfoo도 마찬가지입니다.
CIMIQL
CimIQL은 CIM 제공자 쿼리 프로세스를 단순화하도록 설계된 중간 언어입니다.
CimIQL은 현재 표준 WBEM(Web-Based Enterprise Management) 프로토콜 스택을 지원하지만 WS-MAN(Web Services-Management) 등의 다른 프로토콜 스택이 향후에 추가될 수 있습니다. 쿼리 언어 구문은 Microsoft의 WMI 쿼리 언어와 UNIX의 wbemcli 명령의 요소에서 가져옵니다. CimIQL 라이브러리는 순수 Java 구현입니다.
CimIQL 구문
CimIQL 구문은 쿼리와 서로 다른 토큰을 포함한 여러 요소로 구성됩니다.
| 요소 | 설명 |
|---|---|
| 문 | CimIQL의 가장 기본적인 요소는 올바른 입니다. 문에는 여러 쿼리가 마침표(.)로 구분되어 포함됩니다. |
| 쿼리 | 는 상위 수준의 프로토콜 독립 단일 요청을 나타냅니다. 각 쿼리는 중첩된 언어 구성요소와 토큰으로 알려진 하위 구성요소로 이루어집니다. |
| 토큰 | 은 CimIQL 구문의 특정 어휘 양상을 설명합니다. |
| 운영 토큰 | 각 쿼리의 첫 번째 토큰은 수행할 전체 논리 연산을 나타내는 이어야 합니다. |
| 구성요소 토큰 | 은 운영 토큰의 하위 구성요소입니다. |
| 결과 | 각 쿼리는 결과와 쌍을 이룬 다음 문의 다음 쿼리에 입력으로 제공됩니다. 는 객체 세트와 해당 속성으로 구성됩니다. |
CimIQL 운영 토큰
CimIQL 프로브에는 운영 토큰이 필요합니다.
다음의 각 핵심 운영은 HTTP를 통한 CIM 운영 표준에 대응합니다.
| 값 반환 | 상세 정보 | 동등한 HTTP를 통한 CIM 운영 |
|---|---|---|
| class object | 객체 가져오기 모든 고유 키(키 토큰)와 선택적 매개변수 토큰을 쉼표로 구분하여 지정하여 특정 클래스의 단일 객체를 검색합니다. |
GetInstance |
| class object | 객체 열거 | EnumerateInstances |
| class object | 연결된 객체 열거 이전 쿼리의 각 결과와 연결된 객체를 검색합니다. |
연결자 |
| 문 결과 | 대체 이전 명명된 문의 결과를 자체 문의 다음 쿼리에 입력으로 공급하는 no-op 토큰입니다. |
명명된 문의 결과 참조 |
객체 가져오기 토큰
- 모든 고유 키(키 토큰)와 선택적 매개변수 토큰을 쉼표로 구분하여 지정하여 특정 클래스의 단일 객체를 검색합니다. 이 토큰을 이라고도 합니다.
- <classname>은 원하는 객체의 대/소문자를 구분하는 CIM 클래스 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
- 키 및 매개변수 토큰을 한 쌍의 중괄호 {...}로 묶습니다.
- 이 토큰은 문에서 첫 번째 쿼리로 사용해야 합니다.
- 반환: 클래스 객체
- 예시:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
객체 열거 토큰
- 조건 토큰 및 매개변수 토큰 세트와 일치하는 객체를 검색합니다. 이 토큰을 이라고도 합니다.
- 조건 토큰과 매개변수 토큰을 두 쌍의 중괄호 {{...}}로 묶습니다. 필요한 조건이나 매개변수가 없는 경우 중괄호는 선택 사항입니다.
- <classname>은 원하는 객체의 대/소문자를 구분하는 CIM 클래스 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
- 인덱스 토큰는 옵션입니다.
- 이 토큰은 문에서 첫 번째 쿼리로 사용해야 합니다.
- 반환: 클래스 객체
- 예시:
CIM_ComputerSystem{{Name!='runtime'}}.*
연결된 객체 열거 토큰
- 이전 쿼리의 각 결과와 연결된 객체를 검색합니다.
- 조건 토큰과 매개변수 토큰을 두 쌍의 중괄호 {{...}}로 묶습니다. 필요한 속성 필터나 매개변수가 없는 경우 중괄호는 선택 사항입니다.
- <association classname>은 두 객체를 함께 연결하는 다대다 또는 일대다 클래스의 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
- 결과 객체의 클래스 이름에 따라 결과를 필터링하도록 <parameter token>인 ResultClass를 지정할 수 있습니다.
- 인덱스 토큰는 옵션입니다.
- 이 토큰은 문에서 첫 번째 쿼리로 사용하면 안 됩니다.
- 반환: 클래스 객체
- 예시:
CIM_ComputerSystem{{Name='runtime'}}[2].*
대체 토큰
- 이전 명명된 문의 결과를 자체 문의 다음 쿼리에 입력으로 공급하는 no-op 토큰입니다.
- 반환: void
- 예시:
$(lastComputer).ElementName
CimIQL 구성요소 토큰
CimIQL 프로브에는 운영 토큰의 하위 구성요소인 구성요소 토큰이 필요합니다.
| 토큰 | 상세 정보 |
|---|---|
| 속성 토큰 | * 또는 <property name>,<property name>,... 최종 결과 세트의 각 객체에 대해 반환되는 속성을 지정합니다. |
| 쿼리 구분 기호 토큰 | . (마침표) 쿼리를 구분합니다. |
| 인덱스 토큰 | [index] 앞의 쿼리 결과를 지정된 정수 인덱스의 단일 객체로 줄입니다. |
| 키 토큰 | <key name>='<value>' 키로 지정된 객체 속성을 정확한 값과 일치시킵니다. |
| 조건 토큰 | <property name><conditional operator><enclosed value> 지정된 조건에 따라 객체의 단일 속성을 일치시킵니다. |
| 매개변수 토큰 | <parameter name>:'<value>' 호출 중인 운영에 <parameter name>으로 매개변수를 전달합니다. 매개변수는 CimIQL 전처리 중에 사용되거나 요청을 통해 CIMOM에서 사용될 수 있습니다. |
속성 토큰
- 최종 결과 세트의 각 객체에 대해 반환되는 속성을 지정합니다.
- 와일드카드 *는 사용 가능한 모든 속성을 반환합니다. 그렇지 않으면 원하는 각 속성 이름이 쉼표로 구분된 목록 내에서 제공됩니다.
- 이 토큰은 각 문의 끝에 필요합니다.
- 예시:
CIM_ComputerSystem[0].*
쿼리 구분 기호 토큰
- 쿼리를 구분합니다.
- 예시:
CIM_ComputerSystem.PrimaryOwnerContact
인덱스 토큰
- 앞의 쿼리 결과를 지정된 정수 인덱스의 단일 객체로 줄입니다.
- 이 토큰은 항상 옵션입니다.
- 예시:
CIM_ComputerSystem[0].*
키 토큰
- 키로 지정된 객체 속성을 정확한 값과 일치시킵니다.
- <key name>은 키로 사용되는 속성의 이름입니다.
- 예시:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
조건 토큰
- 지정된 조건에 따라 객체의 단일 속성을 일치시킵니다.
- <property name>은 일치 대상 속성의 이름입니다.
- <conditional operator>는 속성의 실제 값이 예상 값과 비교되는 방법을 결정합니다. 사용할 수 있는 연산자는 equality(=) 및 inequality(!=)입니다.
- <enclosed value>는 다음 중 하나여야 합니다.
- 작은따옴표 ' ... '로 묶은 리터럴 값입니다. 예시: foo='bar'
- 한 쌍의 슬래시 / ... /로 묶은 정규식입니다. 예시: foo=/bar.*/
- 예시:
CIM_ComputerSystem{{Name!='runtime'}}.*
매개변수 토큰
- 호출 중인 운영에 <parameter name>으로 매개변수를 전달합니다. 매개변수에 따라 요청을 통해 CIMOM(Common Information Model Object Manager)에 의해 또는 CimIQL 사전 처리 중 매개변수를 사용할 수 있습니다.
- 예시:
CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*
CimIQL 튜토리얼
각 예가 이전 예 위에 빌드되는 예에 따른 튜토리얼입니다.
| 순서 | CimIQL 문 | 결과 |
|---|---|---|
| 1 | CIM_ComputerSystem[0].* | CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목의 첫 번째 결과를 검색합니다. 모든 속성을 검색합니다. |
| 2 | CIM_ComputerSystem.PrimaryOwnerContact | CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목을 검색합니다. 한 가지 속성인 PrimaryOwnerContact만 검색합니다. |
| 3 | CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* | CIM_ComputerSystem의 고유한 단일 인스턴스와 해당 하위 항목을 검색합니다. 모든 키 토큰을 {} ID 토큰 내에 지정해야 합니다. |
| 4 | CIM_ComputerSystem{{Name!='runtime'}}.* | 이름 속성이 'runtime'이 아닌 CIM_ComputerSystem의 모든 인스턴스와 하위 항목을 검색합니다. 필터 토큰 {{}}은 지정된 모든 속성/키가 포함되지 않은 인스턴스를 필터링합니다. |
| 5 | CIM_ComputerSystem{{Name=/^run.*$/}}.* | / / 문자 내에 포함된 정규식과 값이 일치하는 CIM_ComputerSystem의 모든 인스턴스와 하위 항목을 검색합니다.
주: 정규식에는 작은따옴표가 필요 없습니다. 필터 토큰 {{}}은 지정된 모든 속성/키가 포함되지 않은 인스턴스를 필터링합니다. |
| 6 | CIM_ComputerSystem{{Name='runtime'}}[2].* | CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목(여기에서 인스턴스의 속성 이름은 'runtime'임)의 두 번째 결과를 검색합니다. 운영 순서는 쿼리 구문을 따릅니다.
|
| 7 | CIM_ComputerSystem.CIM_RunningOS[0].Name | 각 CIM_ComputerSystem 인스턴스의 첫 번째 CIM_OperatingSystem 인스턴스에 대한 이름 속성을 검색합니다. 중간 토큰인 CIM_RunningOS는 최종 결과가 아니라 연결자 클래스의 이름입니다. |
| 8 | CIM_ComputerSystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name | 각 CIM_ComputerSystem 인스턴스의 첫 번째 CIM_OperatingSystem 인스턴스에 대한 이름 속성을 검색합니다. 여기에서 각 CIM_OperatingSystem 인스턴스의 이름 속성에는 'CentOS'가 포함되어 있습니다. |
CimIQL 결과
CIM 프로브 결과는 <output> 요소 내에 포함된 XML 문서로 프로브 센서에 전달됩니다.
<!-- 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>