Resolve o script de domínio [closed]

0

Como fazer isso funcionar?

Script 1: (isso não funciona)

host=www.example.com
ip=$(getent hosts | grep $host | awk '{ print $1}')
echo $ip

Script 2: (isso não funciona)

host=www.example.com
ip=$(getent hosts $host | awk '{ print $1}') 
echo $ip

Script 3: (funciona, mas eu preciso usar uma variável ...)

ip=$(getent hosts www.example.com | awk '{ print $1}') 
echo $ip

Eu preciso pegar o IP do arquivo de hosts apropriado, dependendo da variável.

Hosts: (etc / hosts)

 127.0.0.1  localhost
 1.1.1.1  www.example.com
    
por J.Doy 01.12.2015 / 21:17

2 respostas

2

  1. O que você tem lá deveria funcionar, não há razão para isso não funcionar. Certamente funciona no meu sistema.

  2. você não precisa do grep . O seguinte irá funcionar:

ip=$(getent hosts "$host" | awk '{ print $1}')

    
por 01.12.2015 / 21:31
0

Você está confundindo os dois conjuntos de resultados diferentes que podem ser obtidos com getent hosts .

  1. getent hosts retornará um resultado amplamente equivalente a cat /etc/hosts
  2. getent hosts TARGET usará a entrada hosts em /etc/nsswitch.conf para procurar um ou mais bancos de dados do host por TARGET , retornando a primeira correspondência encontrada

O script 1 pesquisará somente host de /etc/hosts . Também pode ser ligeiramente encurtado:

host=www.example.com
ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}')
echo $ip

Os scripts 2 e 3 pesquisarão /etc/hosts e provavelmente DNS também. Não está claro para mim onde você está colocando ' ou " para que seu terceiro script não funcione.

    
por 02.12.2015 / 00:30