IPAddress - スコープ対象、グローバル
IPAddress API には、ルーティング可能、ユニキャスト、マルチキャスト、パブリック、予約済みなど、指定された IP アドレスのさまざまな状態をチェックできるメソッドが用意されています。また、IP アドレスの正規形式 (短縮/標準) 形式と拡張形式を取得することもできます。
SNC グローバル名前空間のグローバル IPAddress クラスとその関連メソッドにアクセスします。
この 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 SNC.IPAddress(ip).isRoutable());
gs.info("ip address 2 is routable?: " + new SNC.IPAddress(ip2).isRoutable());
}
IPAddress - canonicalize(String ipAddress)
アドレスからゼロのパディングを削除して、指定された 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: " + SNC.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: " + SNC.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 を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | IP アドレスオブジェクトがリンクローカルアドレスであるかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isLinkLocal());
gs.info("ip address 2 is link local?: " + new SNC.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 特殊目的アドレスレジストリ」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | IP アドレスオブジェクトがループバック IP アドレスかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isLocalhost());
gs.info("ip address 2 is localhost?: " + new SNC.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 アドレスオブジェクトがマルチキャストアドレスであるかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isMulticast());
gs.info("ip address 2 is multicast?: " + new SNC.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 アドレスオブジェクトがパブリックアドレスであるかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isPublic());
gs.info("ip address 2 is public?: " + new SNC.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 特殊目的アドレスレジストリ」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | IP アドレスオブジェクトが予約済みアドレスかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isReserved());
gs.info("ip address 2 is reserved?: " + new SNC.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 を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | IP アドレスオブジェクトがルーティング可能アドレスかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isRoutable());
gs.info("ip address 2 is routable?: " + new SNC.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 SNC.IPAddress(ip);
var ip2 = new SNC.IPAddress(start_ip);
var ip3 = new SNC.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 アドレスオブジェクトがユニキャストアドレスかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isUnicast());
gs.info("ip address 2 is unicast?: " + new SNC.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 アドレスかどうかを判定します。
このメソッドには、静的実装と非静的実装の両方があります。2 つのメソッド型を呼び出す方法はわずかに異なります。非静的実装の場合、最初に IPAddress オブジェクトをインスタンス化する必要はなく、IPAddress クラス参照で IP アドレスを渡します。どちらも同じ応答を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ipAddress | 文字列 | 検証する IP アドレス。 非静的実装の場合、IP アドレスはメソッド呼び出しではなく IPAddress クラス参照で渡されます。 たとえば、「 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定された IP アドレスが有効な IPv4 アドレスであるかどうかを示すフラグ。 有効な値:
|
次の例は、このメソッドのスコープ対象静的バージョンを使用して、ディスカバリー 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?: " + SNC.IPAddress.isV4(ip));
gs.info(("ip address 2 is v4?: " + SNC.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
次の例は、このメソッドの非静的バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isV4());
gs.info("ip address 2 is v4?: " + new SNC.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 アドレスかどうかを判定します。
このメソッドには、静的実装と非静的実装の両方があります。2 つのメソッド型を呼び出す方法はわずかに異なります。非静的実装の場合、最初に IPAddress オブジェクトをインスタンス化する必要はなく、IPAddress クラス参照で IP アドレスを渡します。どちらも同じ応答を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ipAddress | 文字列 | 検証する IP アドレス。 非静的実装の場合、IP アドレスはメソッド呼び出しではなく IPAddress クラス参照で渡されます。 たとえば、「 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定された IP アドレスが有効な IPv6 アドレスであるかどうかを示すフラグ。 有効な値:
|
次の例は、このメソッドのスコープ付き静的バージョンを使用して、ディスカバリー 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?: " + SNC.IPAddress.isV6(ip));
gs.info(("ip address 2 is v6?: " + SNC.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
次の例は、このメソッドのスコープ対象の非静的バージョンを使用して、ディスカバリー 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 SNC.IPAddress(ip).isV6());
gs.info("ip address 2 is v6?: " + new SNC.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 SNC.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 SNC.IPAddress(ip).toExpanded());
}
出力:
ip address: 2001:41::1
expanded ip address: 2001:0041:0000:0000:0000:0000:0000:0001