IPAddress - 범위 지정, 전역
IPAddress API는 지정된 IP 주소의 다양한 상태(예: 라우팅 가능, 유니캐스트, 멀티캐스트, 공용 또는 예약됨)를 확인할 수 있는 메서드를 제공합니다. 또한 IP 주소의 정식(단축/표준) 및 확장된 형식을 가져올 수 있습니다.
이 API에서 일부 메서드는 정적이고 일부는 비정적입니다. isV4() 및 isV6() 메서드는 정적 및 비정적 구현을 모두 제공합니다. 비정적 메서드의 이점은 IPAddress 객체를 인스턴스화하기 위해 IPAddress() 메서드를 호출할 필요가 없다는 것입니다.
IPAddress - IPAddress(문자열 ipAddress)
지정된 IP 주소에 대한 IPAddress 개체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | IPAddress 개체를 만들 IP 주소입니다. |
다음 코드 예제에서는 비정적 IPAddress 메서드를 호출할 때 IPAddress 생성자를 호출하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var ip2 = gs.getSession().getClientIP().toString();
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + ip2);
gs.info("ip address 1 is routable?: " + new IPAddress(ip).isRoutable());
gs.info("ip address 2 is routable?: " + new IPAddress(ip2).isRoutable());
}
IPAddress - canonicalize(문자열 ipAddress)
주소에서 0 패딩을 제거하여 지정된 IP 주소의 정식(축약형/표준형) 형식을 반환합니다.
예를 들어 IPv6 주소 "0000:0000:0000:0000:0000:0000:0000:0000:0001"의 정식 형식은 "::1"입니다. IPv4 주소 "192.168.001.002"의 정식 형식은 "192.268.1.2"입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 또는 객체 | 정식화할 IP 주소 또는 IP 주소를 포함하는 범위가 지정된 IPAddress 개체입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 정식화된(단축/표준화된) IP 주소입니다. |
다음 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 IPv6 IP 주소를 정식화하는 방법을 보여 줍니다.
function() {
var grCMDB = new GlideRecord('cmdb_ci');
grCMDB.get("SYS_ID");
var ip = grCMDB.getValue('ip_address');
gs.info("ip address: " + ip);
gs.info("canonicalized ip: " + IPAddress.canonicalize(ip));
}
출력:
ip address: 0000:0000:0000:0000:0000:0000:0000:0001
canonicalized ip: ::1
IPAddress - getExpanded(문자열 ipAddress)
지정된 IP 주소의 확장된 형식을 반환합니다.
예를 들어 IPv6 주소 "::1"의 확장된 형식은 "0000:0000:0000:0000:0000:0000:0000:0000:0001"입니다. IPv4 주소 "192.268.1.2"의 확장된 형식은 "192.168.001.002"입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | 확장할 IP 주소입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 확장된 IP 주소입니다. |
다음 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 IPv6 IP 주소를 확장하는 방법을 보여 줍니다.
function() {
var grCMDB = new GlideRecord('cmdb_ci');
grCMDB.get(SYS_ID);
var ip = grCMDB.getValue('ip_address');
gs.info("ip address: " + ip);
gs.info("expanded ip: " + IPAddress.getExpanded(ip));
}
출력:
ip address: ::1
expanded ip: 0000:0000:0000:0000:0000:0000:0000:0001
IPAddress - isLinkLocal()
지정된 IPAddress 개체가 링크-로컬 IP 주소인지 여부를 확인합니다.
링크-로컬 IP 주소에 대한 자세한 내용은 RFC 3927 및 RFC 4291을 참조하십시오.https://datatracker.ietf.org/doc/html/rfc4291
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 링크-로컬 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 링크-로컬 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is link local?: " + new IPAddress(ip).isLinkLocal());
gs.info("ip address 2 is link local?: " + new IPAddress(start_ip).isLinkLocal());
}
출력:
ip address 1: ::1
ip address 2: fe80:1::1
ip address 1 is link local?: false
ip address 2 is link local?: true
IPAddress - isLocalhost()
지정된 IPAddress 개체가 루프백 IP 주소인지 여부를 확인합니다.
루프백 IP 주소에 대한 자세한 내용은 IANA IPv4 특수 목적 주소 레지스트리 및 IANA IPv6 특수 목적 주소 레지스트리를 참조하세요https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xml.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 루프백 IP 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 루프백 IP 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is localhost?: " + new IPAddress(ip).isLocalhost());
gs.info("ip address 2 is localhost?: " + new IPAddress(ip2).isLocalhost());
}
출력:
ip address 1: 127.0.0.1
ip address 2: <current user's public IP Address>
ip address 1 is localhost?: true
ip address 2 is localhost?: false
IPAddress - isMulticast()
지정된 IPAddress 개체가 멀티캐스트 IP 주소인지 여부를 확인합니다.
멀티캐스트 IP 주소에 대한 자세한 내용은 RFC 2365 및 RFC 3306을 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 멀티캐스트 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 멀티캐스트 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is multicast?: " + new IPAddress(ip).isMulticast());
gs.info("ip address 2 is multicast?: " + new IPAddress(start_ip).isMulticast());
}
출력:
ip address 1: ::1
ip address 2: 224.0.0.22
ip address 1 is multicast?: false
ip address 2 is multicast?: true
IPAddress - isPublic()
지정된 IPAddress 개체가 공용 IP 주소인지 여부를 확인합니다. IP 주소는 라우팅할 수 있고 예약된 주소가 아닌 경우 공용으로 간주됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 공용 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 공용 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var ip2 = gs.getSession().getClientIP().toString();
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + ip2);
gs.info("ip address 1 is public?: " + new IPAddress(ip).isPublic());
gs.info("ip address 2 is public?: " + new IPAddress(ip2).isPublic());
}
출력:
ip address 1: 2001:1::1
ip address 2: <current user's public IP Address>
ip address 1 is public?: false
ip address 2 is public?: true
IPAddress - isReserved()
지정된 IPAddress 개체가 예약된 IP 주소인지 여부를 확인합니다.
예약된 IP 주소에 대한 자세한 내용은 IANA IPv4 특수 용도 주소 레지스트리 및 IANA IPv6 특수 용도 주소 레지스트리를 참조하세요.https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 예약된 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 예약된 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var ip2 = gs.getSession().getClientIP().toString();
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + ip2);
gs.info("ip address 1 is reserved?: " + new IPAddress(ip).isReserved());
gs.info("ip address 2 is reserved?: " + new IPAddress(ip2).isReserved());
}
출력:
ip address 1: 2001:1::1
ip address 2: <current user's public IP Address>
ip address 1 is reserved?: true
ip address 2 is reserved?: false
IPAddress - isRoutable()
지정된 IPAddress 개체가 라우팅 가능한 IP 주소인지 여부를 확인합니다.
IP 주소는 개인 주소, 링크-로컬 주소 또는 루프백 주소가 아닌 경우 라우팅 가능한 것으로 간주됩니다. 개인 주소에 대한 자세한 내용은 RFC 1918 및 RFC 4193을 참조하십시오.https://datatracker.ietf.org/doc/html/rfc4193
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 라우팅 가능한 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 라우팅 가능한 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var ip2 = gs.getSession().getClientIP().toString();
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + ip2);
gs.info("ip address 1 is routable?: " + new IPAddress(ip).isRoutable());
gs.info("ip address 2 is routable?: " + new IPAddress(ip2).isRoutable());
}
출력:
ip address 1: ::1
ip address 2: <current user's public IP Address>
ip address 1 is routable?: false
ip address 2 is routable?: true
IPAddress - isSameVersionAs(문자열 ipAddress)
전달된 IPAddress 개체가 지정된 IP 주소와 동일한 버전(IPv4 또는 IPv6)인지 여부를 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | 전달된 IPAddress 개체의 IP 주소에 대해 확인할 IP 주소입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 지정된 IP 주소가 IPAddress 개체의 버전과 같은지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 다양한 IP 주소가 동일한 버전(IPv4 또는 IPv6)인지 여부를 비교하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
var end_ip = grDiscover.getValue('end_ip_address');
gs.info("ip address 1: "+ ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 3: " + end_ip);
var ip1 = new IPAddress(ip);
var ip2 = new IPAddress(start_ip);
var ip3 = new IPAddress(end_ip);
gs.info("ip address 1 is same version as ip address 2?: " + ip1.isSameVersionAs(ip2));
gs.info("ip address 1 is same version as itself?: " + ip1.isSameVersionAs(ip1));
gs.info("ip address 2 is same version as ip address 3?: " + ip2.isSameVersionAs(ip3));
}
출력:
ip address 1: 192.168.0.1
ip address 2: ::2
ip address 3: ::3
ip address 1 is same version as ip address 2?: false
ip address 1 is same version as itself?: true
ip address 2 is same version as ip address 3?: true
IPAddress - isUnicast()
지정된 IPAddress 개체가 유니캐스트 IP 주소인지 여부를 확인합니다.
유니캐스트 주소는 사실상 멀티캐스트가 아닌 주소입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | IP 주소 개체가 유니캐스트 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 유니캐스트 주소인지 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is unicast?: " + new IPAddress(ip).isUnicast());
gs.info("ip address 2 is unicast?: " + new IPAddress(ip2).isUnicast());
}
출력:
ip address 1: 224.0.0.22
ip address 2: <current user's public IP Address>
ip address 1 is unicast?: false
ip address 2 is unicast?: true
IPAddress - isV4(문자열 ipAddress)
지정된 IP 주소가 유효한 IPv4 주소인지 여부를 확인합니다.
이 메서드에는 정적 구현과 비정적 구현이 모두 있습니다. 두 메서드 형식을 호출하는 방법은 약간 다릅니다. 비정적 구현의 경우 먼저 IPAddress 개체를 인스턴스화할 필요가 없으며 IPAddress 클래스 참조에 IP 주소를 전달합니다. 둘 다 동일한 응답을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | 유효성을 검사할 IP 주소입니다. 비정적 구현의 경우 IP 주소는 메서드 호출 대신 IPAddress 클래스 참조에 전달됩니다. 예를 들면 |
| 유형 | 설명 |
|---|---|
| 부울 | 지정된 IP 주소가 유효한 IPv4 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 예제에서는 이 메서드의 범위가 지정된 정적 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 유효한 IPv4 주소인지 여부를 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is v4?: " + IPAddress.isV4(ip));
gs.info(("ip address 2 is v4?: " + IPAddress.isV4(start_ip));
}
출력:
ip address 1: 192.168.0.1
ip address 2: ::2
ip address 1 is v4?: true
ip address 2 is v4?: false
다음 예제에서는 이 메서드의 비정적 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 유효한 IPv4 주소인지 여부를 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is v4?: " + new IPAddress(ip).isV4());
gs.info("ip address 2 is v4?: " + new IPAddress(start_ip).isV4());
}
출력:
ip address 1: 192.168.0.1
ip address 2: ::2
ip address 1 is v4?: true
ip address 2 is v4?: false
IPAddress - isV6(문자열 ipAddress)
지정된 IP 주소가 유효한 IPv6 주소인지 확인합니다.
이 메서드에는 정적 구현과 비정적 구현이 모두 있습니다. 두 메서드 형식을 호출하는 방법은 약간 다릅니다. 비정적 구현의 경우 먼저 IPAddress 개체를 인스턴스화할 필요가 없으며 IPAddress 클래스 참조에 IP 주소를 전달합니다. 둘 다 동일한 응답을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | 유효성을 검사할 IP 주소입니다. 비정적 구현의 경우 IP 주소는 메서드 호출 대신 IPAddress 클래스 참조에 전달됩니다. 예를 들면 |
| 유형 | 설명 |
|---|---|
| 부울 | 지정된 IP 주소가 유효한 IPv6 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 예제에서는 이 메서드의 범위가 지정된 정적 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 유효한 IPv6 주소인지 여부를 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get(SYS_ID);
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is v6?: " + IPAddress.isV6(ip));
gs.info(("ip address 2 is v6?: " + IPAddress.isV6(start_ip));
}
출력:
ip address 1: 192.168.0.1
ip address 2: ::2
ip address 1 is v6?: false
ip address 2 is v6?: true
다음 예제에서는 이 메서드의 범위가 지정된 비정적 버전을 사용하여 Discovery IP 범위 [discovery_range_item] 테이블의 레코드에 있는 IP 주소가 유효한 IPv6 주소인지 여부를 확인하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('discovery_range_item');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('network_ip');
var start_ip = grDiscover.getValue('start_ip_address');
gs.info("ip address 1: " + ip);
gs.info("ip address 2: " + start_ip);
gs.info("ip address 1 is v6?: " + new IPAddress(ip).isV6());
gs.info("ip address 2 is v6?: " + new IPAddress(start_ip).isV6());
}
출력:
ip address 1: 192.168.0.1
ip address 2: ::1
ip address 1 is v6?: false
ip address 2 is v6?: true
IPAddress - isValid(문자열 ipAddress)
지정된 IP 주소가 유효한 IPv4 또는 IPv6 주소인지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| ipAddress | 문자열 | 유효성을 검사할 IP 주소입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 지정된 IP 주소가 유효한 IPv4 또는 IPv6 주소인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
다음 코드 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 구성 항목 [cmdb_ci] 내의 레코드에 있는 IP 주소가 유효한지 확인하는 방법을 보여 줍니다.
function() {
var grCMDB = new GlideRecord('cmdb_ci');
grCMDB.get("SYS_ID");
var ip = grCMDB.getValue('ip_address');
gs.info("ip address: " + ip)
var ipAddress = new IPAddress(ip);
gs.info("ip is valid?: " + ipAddress.isValid())
}
출력:
ip address: 127.0.0.1
ip is valid?: true
IPAddress - toExpanded()
IPAddress 개체의 확장된 형식을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 확장된 IP 주소입니다. |
다음 예제에서는 이 메서드의 범위가 지정된 버전을 사용하여 IPv6 IP 주소를 확장하는 방법을 보여 줍니다.
function() {
var grDiscover = new GlideRecord('cmdb_ci');
grDiscover.get("SYS_ID");
var ip = grDiscover.getValue('ip_address');
gs.info("ip address: " + ip);
gs.info("expanded ip address: " + new IPAddress(ip).toExpanded());
}
출력:
ip address: 2001:41::1
expanded ip address: 2001:0041:0000:0000:0000:0000:0000:0001