IPAddress - スコープ対象、グローバル
IPAddress API は、ルーティング可能、ユニキャスト、マルチキャスト、パブリック、予約済みなど、指定された IP アドレスのさまざまなステータスをチェック可能にするメソッドを提供します。また、IP アドレスの canonical (短縮/標準) および展開形式を取得することもできます。
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(文字列 ipAddress)
アドレスからゼロパディングを削除して、指定された IP アドレスの正規化された (短縮/標準) 形式を返します。
たとえば、「0000:0000:0000:0000:0000:0000:0000:0001」という IPv6 アドレスの正規化された形式は「::1」です。「192.168.001.002」という IPv4 アドレスの正規化された形式は「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 アドレスの拡張形式を返します
たとえば、「::1」という IPv6 アドレスの拡張形式は「0000:0000:0000:0000:0000:0000:0000:0001」です。「192.268.1.2」という IPv4 アドレスの拡張形式は「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 Special-Purpose Address Registry 」および「IANA IPv6 Special-Purpose Address Registry」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 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 アドレスオブジェクトがパブリックアドレスかどうかを示すフラグ。 有効な値:
|
次のコード例は、このメソッドのスコープ対象バージョンを使用して、検出 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 Special-Purpose Address Registry 」および「IANA IPv6 Special-Purpose Address Registry」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| ブーリアン | 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