Tengo varios scripts que requieren la utilidad getent
. Además, he leído varios consejos prácticos que usan getent .
getent
es una utilidad de red que está ampliamente disponible en sistemas basados en Unix, *BSD y Linux. Esta herramienta es comúnmente utilizada por administradores de sistemas y usuarios avanzados para buscar información de red (direcciones IP, etc.). En lo que respecta a los nombres de host, getent
es una de las pocas herramientas que usa ambos /etc/hosts
y DNS.
Como dice Wikipedia :
getent es un comando de Unix que ayuda al usuario a obtener entradas en varios archivos de texto importantes llamados bases de datos.
Lo importante aquí es que getent
buscará los servicios del mismo nombre en el mismo orden que la mayoría de las aplicaciones en un sistema similar a Unix. Esto lo hace invaluable cuando se depuran problemas del sistema o de la aplicación. Las herramientas como dig
y nslookup
específicamente miran solo el DNS, mientras dscl
que espera que usted deletree los servicios de nombre que desea buscar.
Me gustaría usar getent
para dos casos de prueba:
Analizar /etc/hosts
antes de consultar DNS . Por ejemplo, si agrego testhost.example.org
a /etc/hosts
, entonces getent hosts testhost.example.org
debería usar la entrada de /etc/hosts
antes de consultar el DNS.
MacPorts no parece proporcionar un paquete que proporcione getent
.
¿Existe getent
en Snow Leopard?
dscacheutil
es probablemente la mejor manera de hacer esto. No emula el proceso de búsqueda habitual, lo utiliza , por lo que en realidad obtendrá los mismos resultados que una búsqueda estándar (incluido el almacenamiento en caché, /etc/hosts, registros informáticos en servicios de directorio, DNS, mDNS para nombres .locales, etc).
$ dscacheutil -q host -a name www.apple.com
name: e3191.c.akamaiedge.net
alias: www.apple.com www.isg-apple.com.akadns.net www.apple.com.edgekey.net
ip_address: 69.192.45.15
$ dscacheutil -q host -a name gordons-mbp.local
name: gordons-mbp.local
ipv6_address: fe80:5::e6ce:8fff:fe50:136
name: gordons-mbp.local
ip_address: 192.168.10.249
$ dscacheutil -q host -a ip_address 127.0.0.1
name: localhost
alias: 1.0.0.127.in-addr.arpa
ip_address: 127.0.0.1
$ dscacheutil -q user -a name gordon
name: gordon
password: ********
uid: 501
gid: 20
dir: /Users/gordon
shell: /bin/bash
gecos: Gordon Davisson
Eche un vistazo a Cómo emular el getent de Unix con dscl de MacOSX . Dado que tiene secuencias de comandos que hacen uso de getent
, es posible que desee buscar una secuencia de comandos como un envoltorio alrededor de dscl.
No es ciencia espacial buscar la fuente getent de OpenSolaris (o algún otro sistema operativo, probaría uno de los BSD en lugar de Linux) y portarlo; Conseguí que funcionara principalmente simplemente deshabilitando las cosas para las que macOS no tenía ningún equivalente (máscaras de red y proyecto, específico de Solaris). O uno puede escribirlo en perl con bastante facilidad. Alguien hizo uno limitado hace mucho tiempo, y yo hice uno más completo; no es compatible con ether porque no hay una búsqueda estándar para eso desde perl, pero el resto parece funcionar bien.
Cajunluke
getent
? ¿Qué hace? ¿En qué sistemas suele estar disponible?ian c
getent
OS X porque OS X usa DirectoryService para resolver cosas como nombres de host. ¿Puede dar algunosgetent
ejemplos de uso específicos? Sería más fácil mostrarle la forma correspondiente de obtener esa información en OS X.Stefan Lasiewski
getent
suele estar disponible en sistemas Unix, *BSD y similares a Linux. Actualicé mi pregunta.ian c
getent
? ¿ Resolver nombres de host/etc/hosts
antes de usar DNS?Stefan Lasiewski
/etc/hosts
anteriores al DNS, lo cual es útil para el servidor web y otras pruebas de red. Pero yo (y otros administradores de sistemas) también uso getent para otras cosas, como la resolución de problemas de LDAP.