Qual IP usar para o autoteste?

2

Um grupo de servidores oferece funcionalidade em uma porta específica (a porta escuta em todas as interfaces). Os servidores devem testar sua própria funcionalidade conectando-se a si mesmos. Qual nome DNS ou IP deve usar a conexão de teste?

Idealmente, eu usaria um dos IPs locais e terminaria com ele (por exemplo, '192.13.1.5'). No entanto, obter a lista de IPs locais é difícil para o código de teste.

Eu posso usar 'localhost' (127.0.0.1), mas isso usa a interface de loopback e ignora o hardware da rede. O que me leva a ...

Pergunta: Existe uma notação abreviada para "Qualquer IP local que este servidor usa" ? (exceto endereço de loopback).

O uso de '0.0.0.0' parece funcionar no Linux, mas não no Windows.

    
por Happyblue 04.08.2015 / 04:13

2 respostas

6

Para adicionar à sugestão de Michael Hampton, o Windows deve reconhecer %computername% como uma variável de ambiente, que você pode fazer ping, etc.

Parece-me que o cmdlet Test-NetConnection do PowerShell, junto com a variável de ambiente do Windows, pode fazer o que você deseja. Você pode especificar uma porta, mas desde que você não mencionou uma que eu usei apenas

Test-NetConnection -ComputerName $env:COMPUTERNAME

e isso funcionou bem no meu laptop. A sintaxe da porta para verificar a porta 135 (como um exemplo aleatório) seria

Test-NetConnection -Port 135 -ComputerName $env:COMPUTERNAME
    
por 04.08.2015 / 05:39
0

Obrigado pessoal - aprecie profundamente sua ajuda aqui. Sim, as variáveis de ambiente hostname funcionariam, mas exigiriam acesso ao código. Eu estou com o Shane - 0.0.0.0 deve funcionar, mas há algo complicado nisso.

Eu imaginei que precisaria criar código (que tinha que ser Java), então escrevi isso para obter três conjuntos de IPs:

    List<String> IPAddress = new ArrayList<String>();
    List<String> NonLoopbackIPv4Address = new ArrayList<String>();
    List<String> NonLoopbackIPv6Address = new ArrayList<String>();

    try {
        Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
        while(en.hasMoreElements()){
            NetworkInterface ni=(NetworkInterface) en.nextElement();
            Enumeration<InetAddress> ea = ni.getInetAddresses();
            while(ea.hasMoreElements()) {
                InetAddress ia= (InetAddress) ea.nextElement();

                //Add entries to the overall address array 
                IPAddress.add(ia.getHostAddress());

                //Add entries to non-loopback IPv4 address array
                if (!ia.isLoopbackAddress() && (ia.getClass() == Inet4Address.class))  {
                    NonLoopbackIPv4Address.add(ia.getHostAddress());
                }

                //Add entries to non-loopback IPv6 address array
                if (!ia.isLoopbackAddress() && (ia.getClass() == Inet6Address.class))  {
                    NonLoopbackIPv6Address.add(ia.getHostAddress());
                }
            }
         }
    } catch (Exception e) {
        //catch and process necessary exceptions, etc...
        throw new Exception (e);
    }

... onde:

  • IPAddress - lista de todos os endereços IP deste host (ambos v4 e v6), incluindo aqueles ligados à interface de loopback
  • NonLoopbackIPv4Address - lista de todos os endereços IPv4 para este host, excluindo aqueles ligados à interface de loopback
  • NonLoopbackIPv6Address - lista de todos os endereços IPv6 para este host, excluindo aqueles ligados à interface de loopback
por 04.08.2015 / 06:42