Endereço IP - com escopo, global

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 14 min. de leitura
  • A API IPAddress fornece métodos que permitem verificar vários estados de um endereço IP especificado, por exemplo, se ele é roteável, unicast, multicast, público ou reservado. Ele também permite que você obtenha as formas canônica (abreviada/padrão) e expandida de um endereço IP.

    Acesse a classe IPAddress global e seus métodos associados no namespace global SNC.

    Nesta API, alguns dos métodos são estáticos e alguns não estáticos. Os métodos isV4() e isV6() fornecem implementações estáticas e não estáticas. O benefício dos métodos não estáticos é que você não precisa chamar o método IPAddress() para instanciar um objeto IPAddress.

    IPAddress - IPAddress(cadeia de caracteres ipAddress)

    Instancia um objeto IPAddress para o endereço IP especificado.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP para o qual o objeto IPAddress será criado.

    O exemplo de código a seguir mostra como chamar o construtor de IPAddress ao chamar um método de IPAddress não estático.

    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(cadeia de caracteres ipAddress)

    Retorna a forma canônica (abreviada/padrão) do endereço IP especificado, removendo qualquer preenchimento de zero do endereço.

    Por exemplo, a forma canônica do endereço IPv6 "0000:0000:0000:0000:0000:0000:0000:0001" é "::1". A forma canônica do endereço IPv4 "192.168.001.002" é "192.268.1.2".

    Nota:
    Este é um método estático.
    Tabela 2. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres ou objeto Endereço IP para canonizar ou um objeto IPAddress com escopo que contém o endereço IP.
    Tabela 3. Retorna
    Tipo Descrição
    Cadeia de caracteres Endereço IP canonizado (abreviado/padronizado).

    O exemplo a seguir mostra como usar a versão com escopo deste método para canonizar um endereço IP IPv6.

    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));
    }

    Saída:

    ip address: 0000:0000:0000:0000:0000:0000:0000:0001
    canonicalized ip: ::1

    IPAddress - getExpanded(cadeia de caracteres ipAddress)

    Retorna a forma expandida do endereço IP especificado

    Por exemplo, a forma expandida do endereço IPv6 "::1" é "0000:0000:0000:0000:0000:0000:0000:0001". A forma expandida do endereço IPv4 "192.268.1.2" é "192.168.001.002".

    Nota:
    Este é um método estático.
    Tabela 4. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP a ser expandido.
    Tabela 5. Retorna
    Tipo Descrição
    Cadeia de caracteres Endereço IP expandido.

    O exemplo a seguir mostra como usar a versão com escopo deste método para expandir um endereço IP IPv6.

    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));
    }

    Saída:

    ip address: ::1
    expanded ip: 0000:0000:0000:0000:0000:0000:0000:0001

    Endereço IP - isLinkLocal()

    Determina se o objeto IPAddress especificado é um endereço IP local de link.

    Para obter mais informações sobre endereços IP locais de link, consulte RFC 3927 e RFC 4291.

    Nota:
    Este é um método não estático.
    Tabela 6. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 7. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço local de link.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço local de link.
    • falso: o endereço IP não é um endereço local de link.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços de link local.

    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());
    }

    Saída:

    ip address 1: ::1
    ip address 2: fe80:1::1
    ip address 1 is link local?: false
    ip address 2 is link local?: true

    Endereço IP - isLocalhost()

    Determina se o objeto IPAddress especificado é o endereço IP de loopback.

    Para obter informações adicionais sobre o endereço IP de loopback, consulte Registro de endereços para fins especiais IPv4 IANA e Registro de endereços IP para fins especiais IPv6 IANA.

    Nota:
    Este é um método não estático.
    Tabela 8. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 9. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é o endereço IP de loopback.

    Valores válidos:
    • verdadeiro: o endereço IP é o endereço IP de loopback.
    • falso: o endereço IP não é o endereço IP de loopback.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são o endereço IP de loopback.

    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());
    }

    Saída:

    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

    Endereço IP - isMulticast()

    Determina se o objeto IPAddress especificado é um endereço IP multicast.

    Para obter mais informações sobre endereços IP multicast, consulte RFC 2365 e RFC 3306.

    Nota:
    Este é um método não estático.
    Tabela 10. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 11. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço multicast.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço multicast.
    • falso: o endereço IP não é um endereço multicast.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços multicast.

    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());
    }

    Saída:

    ip address 1: ::1
    ip address 2: 224.0.0.22
    ip address 1 is multicast?: false
    ip address 2 is multicast?: true

    Endereço IP - isPublic()

    Determina se o objeto IPAddress especificado é um endereço IP público. Um endereço IP será considerado público se for roteável e não for um endereço reservado.

    Nota:
    Este é um método não estático.
    Tabela 12. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 13. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço público.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço público.
    • falso: o endereço IP não é um endereço público.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços públicos.

    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());
    }

    Saída:

    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

    Endereço IP - isReserved()

    Determina se o objeto IPAddress especificado é um endereço IP reservado.

    Para obter informações adicionais sobre endereços IP reservados, consulte Registro de endereços para fins especiais IPv4 IANA e Registro de endereçospara fins especiais IPv6 IANA.

    Nota:
    Este é um método não estático.
    Tabela 14. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 15. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço reservado.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço reservado.
    • falso: o endereço IP não é um endereço reservado.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços reservados.

    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());
    }

    Saída:

    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

    Endereço IP - isRoutable()

    Determina se o objeto IPAddress especificado é um endereço IP roteável.

    Um endereço IP é considerado roteável se não for um endereço privado, um endereço de link local ou o endereço de loopback. Para obter informações adicionais sobre endereços privados, consulte RFC 1918 e RFC 4193.

    Nota:
    Este é um método não estático.
    Tabela 16. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 17. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço roteável.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço roteável.
    • falso: o endereço IP não é um endereço roteável.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços roteáveis.

    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());
    }

    Saída:

    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(cadeia de caracteres ipAddress)

    Determina se o objeto IPAddress passado é da mesma versão, IPv4 ou IPv6, que o endereço IP especificado.

    Nota:
    Este é um método não estático.
    Tabela 18. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP a ser verificado em relação ao endereço IP no objeto IPAddress passado.
    Tabela 19. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o endereço IP especificado é da mesma versão do objeto IPAddress.

    Valores válidos:
    • verdadeiro: a versão do endereço IP é a mesma.
    • falso: a versão do endereço IP é diferente.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para comparar se vários endereços IP são da mesma versão (IPv4 ou 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));
    }

    Saída:

    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

    Endereço IP - isUnicast()

    Determina se o objeto IPAddress especificado é um endereço IP unicast.

    Um endereço unicast é efetivamente um endereço que não é multicast.

    Nota:
    Este é um método não estático.
    Tabela 20. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 21. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o objeto de endereço IP é um endereço unicast.

    Valores válidos:
    • verdadeiro: o endereço IP é um endereço unicast.
    • falso: o endereço IP não é um endereço unicast.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços unicast.

    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());
    }

    Saída:

    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(cadeia de caracteres ipAddress)

    Determina se o endereço IP especificado é um endereço IPv4 válido.

    Este método tem implementações estáticas e não estáticas. A maneira como você chama os dois tipos de método é um pouco diferente. Para a implementação não estática, você não precisa primeiro criar uma instância de um objeto IPAddress e passar o endereço IP na referência da classe IPAddress. Ambos retornam a mesma resposta.

    Tabela 22. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP a ser validado.

    Para a implementação não estática, o endereço IP é passado na referência da classe IPAddress em vez da chamada de método.

    Por exemplo , New SNC.IPAddress("::1").isV4();.

    Tabela 23. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o endereço IP especificado é um endereço IPv4 válido.

    Valores válidos:
    • verdadeiro: o endereço IP é válido.
    • falso: o endereço IP é inválido.

    O exemplo a seguir mostra como usar a versão estática com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços IPv4 válidos.

    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));
    }

    Saída:

    ip address 1: 192.168.0.1
    ip address 2: ::2
    ip address 1 is v4?: true
    ip address 2 is v4?: false

    O exemplo a seguir mostra como usar a versão não estática deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços IPv4 válidos.

    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());
    }

    Saída:

    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(cadeia de caracteres ipAddress)

    Determina se o endereço IP especificado é um endereço IPv6 válido.

    Este método tem implementações estáticas e não estáticas. A maneira como você chama os dois tipos de método é um pouco diferente. Para a implementação não estática, você não precisa primeiro criar uma instância de um objeto IPAddress e passar o endereço IP na referência da classe IPAddress. Ambos retornam a mesma resposta.

    Tabela 24. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP a ser validado.

    Para a implementação não estática, o endereço IP é passado na referência da classe IPAddress em vez da chamada de método.

    Por exemplo , New SNC.IPAddress("::1").isV6();.

    Tabela 25. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o endereço IP especificado é um endereço IPv6 válido.

    Valores válidos:
    • verdadeiro: o endereço IP é válido.
    • falso: o endereço IP é inválido.

    O exemplo a seguir mostra como usar a versão estática com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços IPv6 válidos.

    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));
    }

    Saída:

    ip address 1: 192.168.0.1
    ip address 2: ::2
    ip address 1 is v6?: false
    ip address 2 is v6?: true

    O exemplo a seguir mostra como usar a versão não estática com escopo deste método para verificar se os endereços IP em um registro na tabela Intervalos de IP do Discovery [discovery_range_item] são endereços IPv6 válidos.

    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());
    
    }

    Saída:

    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(cadeia de caracteres ipAddress)

    Determina se o endereço IP especificado é um endereço IPv4 ou IPv6 válido.

    Nota:
    Este é um método estático.
    Tabela 26. Parâmetros
    Nome Tipo Descrição
    ipAddress Cadeia de caracteres Endereço IP a ser validado.
    Tabela 27. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se o endereço IP especificado é um endereço IPv4 ou IPv6 válido.

    Valores válidos:
    • verdadeiro: o endereço IP é válido.
    • falso: o endereço IP é inválido.

    O exemplo de código a seguir mostra como usar a versão com escopo deste método para verificar se o endereço IP em um registro nos itens de configuração [cmdb_ci] é válido.

    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())
    }

    Saída:

    ip address: 127.0.0.1
    ip is valid?: true

    Endereço IP - toExpanded()

    Retorna o formulário expandido de um objeto IPAddress.

    Nota:
    Este é um método não estático.
    Tabela 28. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 29. Retorna
    Tipo Descrição
    Cadeia de caracteres Endereço IP expandido.

    O exemplo a seguir mostra como usar a versão com escopo deste método para expandir um endereço IP IPv6.

    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());
    }

    Saída:

    ip address: 2001:41::1
    expanded ip address: 2001:0041:0000:0000:0000:0000:0000:0001