Come posso installare getent su Snow Leopard?


9

Ho diversi script che richiedono l'utilità getent. Inoltre, ho letto diversi consigli pratici che usano getent .

getentè un'utilità di rete ampiamente disponibile su sistemi Unix, * BSD e basati su Linux. Questo strumento viene comunemente utilizzato da amministratori di sistema e utenti esperti per cercare informazioni sulla rete (indirizzi IP, ecc.). Per quanto riguarda i nomi host, getentè uno dei pochi strumenti che utilizzano sia /etc/hostsDNS che DNS.

Come dice Wikipedia :

getent è un comando unix che aiuta un utente a ottenere voci in una serie di importanti file di testo chiamati database.

La cosa importante qui è che getentcercherà i servizi con lo stesso nome nello stesso ordine della maggior parte delle applicazioni su un sistema simile a unix. Ciò lo rende prezioso in caso di problemi di debug del sistema o dell'applicazione. Strumenti come dige nslookupspecificamente guardano solo al DNS, mentre si dsclaspettano che tu scriva i nomi dei servizi che vuoi cercare.

Vorrei usare getentper due test:

  1. Analizzare /etc/hostsprima di interrogare DNS . Ad esempio, se aggiungo testhost.example.orga /etc/hosts, allora getent hosts testhost.example.orgdovrei usare la voce /etc/hostsprima di interrogare DNS.

  2. Interroga LDAP usando getent

MacPorts non sembra fornire un pacchetto getent.

Esiste getentsu Snow Leopard?


Che cosa è getent? Che cosa fa? Su quali sistemi è generalmente disponibile?
Cajunluke,

3
Non esiste una mappatura 1: 1 per getentOS X perché OS X utilizza DirectoryService per eseguire risoluzioni su cose come i nomi host. Puoi dare alcuni getentesempi d'uso specifici ? Renderebbe più semplice mostrarti il ​​modo corrispondente per ottenere quelle informazioni su OS X.
Ian C.

@CajunLuke: getentè generalmente disponibile su sistemi Unix, * BSD e Linux. Ho aggiornato la mia domanda.
Stefan Lasiewski,

Quindi con cosa stai cercando di fare getent? Risolvi i nomi host /etc/hostsprima di utilizzare il DNS?
Ian C.

Il mio caso d'uso più comune è quello di risolvere i nomi host /etc/hostsprecedenti a DNS, utile per Webserver e altri test di rete. Ma io (e altri amministratori di sistema) uso getent anche per altre cose, come la risoluzione dei problemi LDAP.
Stefan Lasiewski,

Risposte:


9

dscacheutilè probabilmente il modo migliore per farlo. Non emula il normale processo di ricerca, lo utilizza , quindi otterrai effettivamente gli stessi risultati di una ricerca standard (inclusi cache, / etc / hosts, record di computer nei servizi di directory, DNS, mDNS per nomi .local, eccetera).

$ 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


2

Non è scienza missilistica scroccare la fonte getent da OpenSolaris (o qualche altro sistema operativo, proverei uno dei BSD piuttosto che Linux) e portarlo; L'ho fatto funzionare principalmente disabilitando le cose per cui macOS non aveva equivalenti (maschere di rete e progetti - specifici di Solaris). Oppure si può scrivere in perl abbastanza facilmente. Qualcuno ne ha fatto uno limitato molto tempo fa, e io ne ho fatto uno più completo; non supporta gli eteri perché non esiste una ricerca standard per quello da parte di perl, ma il resto sembra funzionare bene.

getent.pl

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.