IPAddress - スコープ対象、グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:26分
  • IPAddress API は、ルーティング可能、ユニキャスト、マルチキャスト、パブリック、予約済みなど、指定された IP アドレスのさまざまなステータスをチェック可能にするメソッドを提供します。また、IP アドレスの canonical (短縮/標準) および展開形式を取得することもできます。

    SNC グローバル名前空間でグローバル IPAddress クラスとそれに関連するメソッドにアクセスします。

    この API には、静的なメソッドと静的でないメソッドがあります。isV4() メソッドと isV6() メソッドは、静的実装と非静的実装の両方を提供します。非静的メソッドの利点は、 IPAddress() オブジェクトをインスタンス化するために IPAddress() メソッドを呼び出す必要がないことです。

    IPAddress - IPAddress(文字列 ipAddress)

    指定された IP アドレスの IPAddress オブジェクトをインスタンス化します。

    表 : 1. パラメーター
    名前 タイプ 説明
    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」です。

    注:
    これは静的メソッドです。
    表 : 2. パラメーター
    名前 タイプ 説明
    ipAddress 文字列またはオブジェクト 正規化する IP アドレス、またはその IP アドレスを含むスコープ対象の IPAddress オブジェクト。
    表 : 3. 返される内容
    タイプ 説明
    文字列 正規化された (短縮/標準化された) 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」です。

    注:
    これは静的メソッドです。
    表 : 4. パラメーター
    名前 タイプ 説明
    ipAddress 文字列 拡張する IP アドレス。
    表 : 5. 返される内容
    タイプ 説明
    文字列 拡張 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 を参照してください。

    注:
    これは静的でないメソッドです。
    表 : 6. パラメーター
    名前 タイプ 説明
    なし
    表 : 7. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがリンクローカルアドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはリンクローカルアドレスです。
    • false: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」を参照してください。

    注:
    これは静的でないメソッドです。
    表 : 8. パラメーター
    名前 タイプ 説明
    なし
    表 : 9. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがループバック IP アドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはループバック IP アドレスです。
    • false: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 を参照してください。

    注:
    これは静的でないメソッドです。
    表 : 10. パラメーター
    名前 タイプ 説明
    なし
    表 : 11. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがマルチキャストアドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはマルチキャストアドレスです。
    • false: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 アドレスはパブリックとみなされます。

    注:
    これは静的でないメソッドです。
    表 : 12. パラメーター
    名前 タイプ 説明
    なし
    表 : 13. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがパブリックアドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはパブリックアドレスです。
    • false: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」を参照してください。

    注:
    これは静的でないメソッドです。
    表 : 14. パラメーター
    名前 タイプ 説明
    なし
    表 : 15. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトが予約済みアドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスは予約済みアドレスです。
    • false: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 を参照してください。

    注:
    これは静的でないメソッドです。
    表 : 16. パラメーター
    名前 タイプ 説明
    なし
    表 : 17. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがルーティング可能アドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはルーティング可能アドレスです。
    • false: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) であるかどうかを判別します。

    注:
    これは静的でないメソッドです。
    表 : 18. パラメーター
    名前 タイプ 説明
    ipAddress 文字列 渡された IPAddress オブジェクトの IP アドレスと照合する IP アドレス。
    表 : 19. 返される内容
    タイプ 説明
    ブーリアン

    指定された IP アドレスが IPAddress オブジェクトのものと同じバージョンかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスのバージョンは同じです。
    • false:IP アドレスのバージョンは異なります。

    次のコード例は、このメソッドのスコープ対象バージョンを使用して、さまざまな 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 アドレスかどうかを判断します。

    ユニキャストアドレスは実質的に、マルチキャストでないアドレスです。

    注:
    これは静的でないメソッドです。
    表 : 20. パラメーター
    名前 タイプ 説明
    なし
    表 : 21. 返される内容
    タイプ 説明
    ブーリアン

    IP アドレスオブジェクトがユニキャストアドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスはユニキャストアドレスです。
    • false: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 アドレスを渡します。どちらも同じ応答を返します。

    表 : 22. パラメーター
    名前 タイプ 説明
    ipAddress 文字列 検証する IP アドレス。

    静的でない実装の場合、IP アドレスはメソッドの呼び出しではなく IPAddress クラス参照で渡されます。

    例: 新規 SNC。IPAddress("::1").isV4();.

    表 : 23. 戻り値
    タイプ 説明
    ブーリアン

    指定された IP アドレスが有効な IPv4 アドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスは有効です。
    • false:IP アドレスは無効です。

    次の例は、このメソッドのスコープ指定の静的バージョンを使用して、検出 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 アドレスを渡します。どちらも同じ応答を返します。

    表 : 24. パラメーター
    名前 タイプ 説明
    ipAddress 文字列 検証する IP アドレス。

    静的でない実装の場合、IP アドレスはメソッドの呼び出しではなく IPAddress クラス参照で渡されます。

    例: 新規 SNC。IPAddress("::1").isV6();.

    表 : 25. 戻り値
    タイプ 説明
    ブーリアン

    指定された IP アドレスが有効な IPv6 アドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスは有効です。
    • false:IP アドレスは無効です。

    次の例は、このメソッドのスコープ指定の静的バージョンを使用して、検出 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 アドレスかどうかを判断します。

    注:
    これは静的メソッドです。
    表 : 26. パラメーター
    名前 タイプ 説明
    ipAddress 文字列 検証する IP アドレス。
    表 : 27. 返される内容
    タイプ 説明
    ブーリアン

    指定された IP アドレスが有効な IPv4 または IPv6 アドレスかどうかを示すフラグ。

    有効な値:
    • true:IP アドレスは有効です。
    • false:IP アドレスは無効です。

    次のコード例は、このメソッドのスコープ指定バージョンを使用して、構成アイテム [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 オブジェクトの拡張形式を返します。

    注:
    これは静的でないメソッドです。
    表 : 28. パラメーター
    名前 タイプ 説明
    なし
    表 : 29. 返される内容
    タイプ 説明
    文字列 拡張 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