Por que não há comando Unix para gethostbyname?

2

Eu sei que há host e dig e todos esses ... mas eles são ferramentas de DNS e não consultam a biblioteca de resolvedor local.

/etc/hosts pode alterar o que o resolvedor local retorna. O resolvedor local também faz cache. /etc/nsswitch.conf pode remover completamente o DNS do caminho de resolução ...

Portanto, parece estranho que não exista um comando para verificar o que a biblioteca de resolvedores locais possui.

Eu normalmente faço algo assim:

export VAR='"nics-acer"'; python -c "import socket; print(socket.gethostbyname($VAR));"

e quando eu escrevi minha versão em Python de resolvconf , adicionei um switch para testar o resolvedor, mas não deveria existir um motivo para não haver uma ferramenta padrão?

    
por nic ferrier 25.04.2012 / 13:15

1 resposta

12

Existe tal comando: getent .

Tente o seguinte: getent hosts google.com , getent hosts 8.8.8.8 - ele será consultado usando o resolvedor do sistema (veja também /etc/nsswitch.conf para verificar o que realmente está sendo consultas e em qual ordem).

    
por 25.04.2012 / 13:20