¿Cómo puedo instalar getent en Snow Leopard?

Tengo varios scripts que requieren la utilidad getent. Además, he leído varios consejos prácticos que usan getent .

getentes 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, getentes una de las pocas herramientas que usa ambos /etc/hostsy 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 getentbuscará 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 digy nslookupespecíficamente miran solo el DNS, mientras dsclque espera que usted deletree los servicios de nombre que desea buscar.

Me gustaría usar getentpara dos casos de prueba:

  1. Analizar /etc/hostsantes de consultar DNS . Por ejemplo, si agrego testhost.example.orga /etc/hosts, entonces getent hosts testhost.example.orgdebería usar la entrada de /etc/hostsantes de consultar el DNS.

  2. Consulta LDAP usando getent

MacPorts no parece proporcionar un paquete que proporcione getent.

¿Existe getenten Snow Leopard?

¿Qué es getent? ¿Qué hace? ¿En qué sistemas suele estar disponible?
No hay mapeo 1:1 para getentOS X porque OS X usa DirectoryService para resolver cosas como nombres de host. ¿Puede dar algunos getentejemplos de uso específicos? Sería más fácil mostrarle la forma correspondiente de obtener esa información en OS X.
@CajunLuke: getentsuele estar disponible en sistemas Unix, *BSD y similares a Linux. Actualicé mi pregunta.
Entonces, ¿qué es lo que estás tratando de hacer con getent? ¿ Resolver nombres de host /etc/hostsantes de usar DNS?
Mi caso de uso más común es resolver nombres de host /etc/hostsanteriores 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.

Respuestas (3)

dscacheutiles 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.

getent.pl