-
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