Qual é o meio canônico / portátil de determinar APENAS o ip de uma interface

3

Estou escrevendo alguns scripts de configuração / documentação e quero definir dinamicamente o ip de escuta para um serviço, uma vez que sei que uma determinada interface de rede estará em uma determinada rede. Há muitos serviços na minha rede que eu gostaria de configurar dessa maneira, então espero que isso simplifique o meu trabalho um pouco (minúsculo).

Eu sei que isso pode ser feito analisando os encantamentos de ifconfig , ip , etc, mas estou imaginando se essa é a solução canônica.

    
por Dana the Sane 15.08.2011 / 19:50

4 respostas

2

Se você quer portável, então você tem que analisar a saída do ifconfig. facter e ip , por exemplo, não são nativos do Solaris e provavelmente de outros sistemas operacionais semelhantes a Uinix. A saída do ifconfig também varia entre as plataformas. Você realmente vai ter que escrever um script que detecta o sistema operacional e faz a coisa certa. Eu coletei alguns liners para vários sistemas operacionais aqui .

    
por 13.04.2017 / 14:14
2

Pelo que vi, a maneira mais fácil de obter essas informações consistentemente de uma variedade de sistemas operacionais é usar facter .

$ facter | grep ipaddress
ipaddress => 192.168.0.2 
ipaddress_eth0 => 192.168.0.2 
ipaddress_eth1 => 192.168.0.3

Veja também: Referência dos fatos de marionetes incorporados .

    
por 15.08.2011 / 20:05
1

ifconfig é a ferramenta mais comum que encontrei. Se você tem certeza de que quer trabalhar apenas no nível de shell / ifconfig, apenas escreva algum código de shell para analisar a saída de "ifconfig en0" (você mencionou conhecer a interface). Verifique o status: ativo e, em seguida, examine a linha "inet" para ativar o endereço IP.

Além disso, se você tiver serviços DNS nesses sistemas, você pode usar apenas resolver a saída do comando "hostname".

Ou até mesmo por aí e adicionar um registro extra ao seu / etc / hosts (se você tiver resolução baseada em arquivos no mix) como "selfenddress" e colocar o IP da caixa lá - uma coisa para definir cada sistema. Então, no seu start / documentation / etc, basta resolver esse nome estático e, em cada sistema, você obterá o IP.

    
por 15.08.2011 / 20:08
1

Posso pensar em uma solução canônica que deve ser neutra em relação ao fornecedor e funcionar em várias plataformas, incluindo Linux, * nix, Windows, firmware de roteador e muitos outros sistemas.

Ative o SNMP em tudo e, em seguida, pegue a interface / ip list via SNMP. É uma maneira relativamente complexa de obter informações, daí a remoção do ip de ifconfig, ip, ipconfig e outras ferramentas.

As seções relevantes a serem percorridas incluem

por 17.08.2011 / 09:34