스크립트 포함
스크립트 포함은 서버에서 실행되는 JavaScript를 저장하는 데 사용됩니다.
서버 스크립트에서 사용할 JavaScript 함수와 클래스를 저장하는 스크립트 포함을 만듭니다. 각 스크립트 포함은 객체 클래스 또는 함수를 정의합니다.
스크립트 포함은 요청 시에만 로드되므로 전역 비즈니스 규칙 대신 스크립트 포함을 사용하는 것이 좋습니다.
자세한 내용은 및를 Discovery 스크립트 포함 참조하십시오클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정.
스크립트 포함 양식
스크립트 포함에는 이름, 설명 및 스크립트가 있습니다. 또한 활성 상태인지 여부와 클라이언트 스크립트에서 호출할 수 있는지 여부도 지정합니다. 스크립트 포함 양식을 사용하여 기존 스크립트 포함을 보거나 새 스크립트 포함을 생성합니다.
스크립트 포함에 액세스하려면 시스템 정의 > 스크립트 포함으로 이동합니다.
| 필드 | 설명 |
|---|---|
| 이름 | 스크립트 포함의 이름입니다. 클래스를 정의하는 경우 클래스, 프로토타입 및 형식의 이름과 일치해야 합니다. 클래스 없는(요청 시) 스크립트 포함을 사용하는 경우 이름이 함수 이름과 일치해야 합니다. |
| API 이름 | 읽기 전용이며 자동으로 채워진 API 이름입니다. |
| 클라이언트 호출 가능 | 클라이언트 스크립트, 목록/보고서 필터, 참조 한정자 또는 URL의 일부로 지정된 경우 스크립트 포함을 사용할 수 있도록 합니다. 선택하면 접근 제어 관련 링크를 사용할 수 있습니다. 자세한 내용은 클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정 문서를 참조하십시오. |
| 애플리케이션 | 이 스크립트가 포함된 애플리케이션입니다. |
| 다음에서 접근 가능 | 이 스크립트 포함에 접근할 수 있는 애플리케이션을 설정합니다.
|
| 활성 | 선택 시 스크립트 포함을 사용합니다. 스크립트 포함을 사용하지 않으려면 활성 필드를 선택 취소합니다. |
| 설명 | 스크립트 포함과 관련된 설명 콘텐츠를 제공합니다. |
| 스크립트 | 다른 스크립트에서 호출될 때 실행할 서버 측 스크립트를 정의합니다. 스크립트는 단일 JavaScript 클래스 또는 전역 함수를 정의해야 합니다. 클래스 또는 함수 이름이 이름 필드와 일치해야 합니다. |
| 패키지 | 이 스크립트 포함이 포함된 패키지입니다. |
| 작성자 | 이 스크립트 포함을 생성한 사용자입니다. |
| 업데이트한 사람 | 이 스크립트 포함을 가장 최근에 업데이트한 사용자입니다. |
| 보호 정책 | 스크립트 포함에 대한 보호 수준을 설정합니다.
|
| 양식 뷰의 관련 목록: | |
| 버전 | 스크립트 포함의 모든 버전을 표시합니다. 이 목록을 사용하여 버전을 비교하거나 이전 버전으로 되돌릴 수 있습니다. 버전을 참조하십시오. |
| 접근 제어 | 클라이언트 호출 가능 확인란을 선택하고 표준 스크립트 포함에서 숨겨져 있는 경우 사용할 수 있습니다. 공용 액세스 권한이 부여되지 않을 때 무단 사용으로부터 CCSI를 보호하는 데 사용합니다. |
스크립트 포함 사용
Script Includes는 시스템 정의 또는 시스템 UI에서 찾을 수 있습니다. 스크립트에서 기존 스크립트 포함을 호출하거나 새 스크립트 포함을 만들 수 있습니다.
완전히 새로운 스크립트 포함을 만들려면 기존 스크립트 포함의 형식을 따를 수 있습니다. 이 예제에서 스크립트 포함의 이름은 NewInclude 이고 myFunction이라는 단일 함수가 있습니다. 스크립트 포함의 이름이 클래스, 프로토타입 및 유형의 이름과 일치해야 합니다. 새 스크립트 포함을 만들고 이름을 지정하면 시스템은 클래스와 프로토타입이 올바르게 설정된 코드 스니펫을 제공합니다.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};그런 다음 다음과 같이 myFunction 행을 사용할 수 있습니다.
var foo =new NewInclude();
foo.myFunction();클라이언트 호출 가능 스크립트 포함
CCSI(Client Callable Script Includes)를 사용하면 클라이언트 스크립트, 목록/보고서 필터, 참조 규정자 또는 URL의 일부로 지정된 경우 스크립트 포함을 사용할 수 있습니다.
시작하기 전에
필요한 역할: admin
프로시저
클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정
클라이언트 호출 가능 스크립트 포함(CCSI)에 대한 개인정보 설정은 클라이언트 호출 가능 스크립트 포함에 액세스할 수 있는 사용자를 판별합니다.
개인 정보 보호 설정
개인 개인 정보 설정은 공용 페이지에 액세스하는 게스트가 클라이언트 호출 가능 스크립트 포함에 액세스할 수 없음을 의미합니다. 로그인하지 않은 사용자는 개인 스크립트를 실행할 수 없습니다.
공개 개인 정보 설정
공개 개인 정보 설정은 로그인하지 않은 사용자가 클라이언트 스크립트를 실행하여 적절한 HTTP 요청을 생성할 수 있음을 의미합니다. 클라이언트 스크립트가 기밀 정보를 제공하는 경우 보안 문제가 발생할 수 있습니다.
- 글라이드시스템아약스
- SysMessageAjax
- 지식메시징Ajax
- 지식Ajax
- PasswordResetAjax
모든 클라이언트 호출 가능 스크립트 포함에 대한 개인 정보 설정
모든 클라이언트 호출 가능 스크립트 포함에서 개인 정보 설정을 변경합니다.
모든 클라이언트 호출 가능 스크립트 포함에 대한 추가 제어를 제공하기 위해 관리자는 glide.script.ccsi.ispublic 속성을 추가할 수 있습니다. 이 속성은 클라이언트 호출 가능 스크립트 포함을 모두 공개 또는 비공개로 설정하여 표시 여부를 변경합니다. 다음과 같이 속성을 구성합니다.
| 제목 | 속성 |
|---|---|
| 이름 | glide.script.ccsi.ispublic |
| 유형 | true|false |
| 값 | false |
단일 클라이언트 호출 가능 스크립트 포함에서 개인정보 변경
isPublic() 함수를 추가하여 단일 클라이언트 호출 가능 스크립트 포함에 대한 개인 정보 설정을 변경합니다.
isPublic() 설정이 속성보다 우선합니다glide.script.ccsi.ispublic. 예를 들어, 속성이 false로 설정되어 모든 클라이언트 호출 가능 스크립트 포함을 비공개로 설정하고 스크립트가 isPublic() 을 true로 설정하면 스크립트는 공개됩니다.
단일 클라이언트 호출 가능 스크립트 포함에 대한 개인정보를 변경하려면 스크립트 포함에 다음 메서드를 추가합니다.
isPublic:function(){return[true/false];},var NewInclude =Class.create();
NewInclude.prototype={
initialize:function(){},
myFunction:function(){//Put function code here},
isPublic:function(){return false;},
type:'NewInclude'};
클라이언트 호출 가능 스크립트 포함에 대한 보안
P는 클라이언트 호출 가능 스크립트 포함(CCSI)을 무단 사용에 방지합니다. 고객 애플리케이션에 생성된 모든 CCSI 레코드의 경우 보안 위험을 줄이는 데 도움이 될 수 있는 권장 사항이 표시됩니다.
CCSI를 생성할 때 시스템은 아직 구성되지 않은 경우 다음과 같은 보안 권장 사항을 표시합니다.
- CCSI에 공용 액세스 권한이 없는 경우 액세스 제어를 추가하거나 정의합니다.
- 스크립트가 데이터베이스를 쿼리하는 경우 보안을 강화하려면 GlideRecord API 대신 GlideRecordSecure를 사용합니다.주:보안 권장 사항 메시지를 사용 안함으로 설정하려면 sys_properties 테이블에서 glide.script.ccsi.customer_scoped.security_msgs_enabled 속성을 false 로 설정하십시오. 기본값은 true로 설정됩니다.
보안 규정 준수에 대한 자세한 내용은 인스턴스 보안 강화 설정을 참조하십시오.
Discovery 스크립트 포함
검색 스크립트 포함은 작업을 수행하는 검색 데 사용할 수 있는 JavaScript 클래스를 정의합니다.
GlideRecordUtil을 사용하여 GlideRecord 작업
GlideRecordUtil 은 GlideRecord 검색를 사용하는 동안 유용한 메서드를 제공하는 유틸리티 클래스입니다. 사용 가능한 메서드에 대한 설명은 GlideRecordUtil 을 참조하십시오.
GlideRecord 인스턴스 가져오기
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");GlideRecord에서 모든 필드 가져오기
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var fields = new GlideRecordUtil().getFields(now_GR);
gs.log(fields.join(" ")); // List all the fields that are in a computer CIGlideRecord 객체 필드 채우기
var objectToPopulate = { };
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var ignore = {"sys_created_on": true, "sys_updated_by": true};
new GlideRecordUtil.03().populateFromGR(objectToPopulate, gr, ignore);
// Now the objectToPopulate contains field/value pairs from the computer GlideRecordvar now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
var ignore = {"sys_created_by": true};
new GlideRecordUtil().mergeToGR(obj, gr, ignore);
gr.update();테이블 계층 구조 가져오기
var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
gs.log(tables.join(","));
// The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".DiscoveryException 및 AutomationException 사용
센서 및 센서 관련 스크립트를 작성할 검색 때 DiscoveryException 또는 AutomationException을 사용하여 예외가 에서 발생했음을 나타낼 수 있습니다 검색.
function foo() {
if(//condition matches) throw new DiscoveryException("The message", "The cause"); }try {
foo();
}
catch(e) {
if(e instanceof DiscoveryException)
gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }위의 예제는 AutomationException에도 적용됩니다. DiscoveryException 은 일반적으로 Discovery에 대한 예외 처리를 제공하는 데 사용되는 반면, AutomationException 은 Orchestration 및 검색.