-
O que você tem lá deveria funcionar, não há razão para isso não funcionar. Certamente funciona no meu sistema.
-
você não precisa do
grep. O seguinte irá funcionar:
ip=$(getent hosts "$host" | awk '{ print $1}')
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
O que você tem lá deveria funcionar, não há razão para isso não funcionar. Certamente funciona no meu sistema.
você não precisa do grep . O seguinte irá funcionar:
ip=$(getent hosts "$host" | awk '{ print $1}')
Você está confundindo os dois conjuntos de resultados diferentes que podem ser obtidos com getent hosts .
getent hosts retornará um resultado amplamente equivalente a cat /etc/hosts
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.
Tags bash hosts shell-script