Wie kann ich getent auf Snow Leopard installieren?

Ich habe mehrere Skripte, die das Dienstprogramm benötigen getent. Außerdem habe ich einige praktische Tipps gelesen, die getent verwenden .

getentist ein Netzwerkdienstprogramm, das auf Unix-, *BSD- und Linux-basierten Systemen weit verbreitet ist. Dieses Tool wird häufig von Systemadministratoren und Power-Usern verwendet, um Netzwerkinformationen (IP-Adressen usw.) nachzuschlagen. Was Hostnamen betrifft, getentist eines der wenigen Tools, das sowohl /etc/hostsDNS als auch verwendet.

Wie Wikipedia sagt :

getent ist ein Unix-Befehl, der einem Benutzer hilft, Einträge in einer Reihe wichtiger Textdateien, die als Datenbanken bezeichnet werden, zu erhalten.

Das Wichtigste hier ist, dass getentdie gleichen Namensdienste in der gleichen Reihenfolge durchsucht werden wie die meisten Anwendungen auf einem Unix-ähnlichen System. Dies macht es von unschätzbarem Wert beim Debuggen von System- oder Anwendungsproblemen. Tools wie digund nslookupspeziell schauen sich nur DNS an, während dsclerwartet wird, dass Sie die Namensdienste buchstabieren, nach denen Sie suchen möchten.

Ich möchte getentfür zwei Testfälle verwenden:

  1. Vor /etc/hostsdem Abfragen von DNS parsen . Wenn ich beispielsweise zu hinzufüge testhost.example.org, /etc/hostssollte getent hosts testhost.example.orgder Eintrag von verwendet werden , /etc/hostsbevor DNS abgefragt wird.

  2. Fragen Sie LDAP mit getent ab

MacPorts scheint kein Paket zur Verfügung zu stellen getent.

Existiert getentauf Snow Leopard?

Was ist getent? Was tut es? Auf welchen Systemen ist es normalerweise verfügbar?
Es gibt keine 1:1-Zuordnung für getentOS X, da OS X DirectoryService verwendet , um Dinge wie Hostnamen aufzulösen. Können Sie konkrete getentAnwendungsbeispiele nennen? Es würde Ihnen den entsprechenden Weg zeigen, wie Sie diese Informationen unter OS X einfacher erhalten.
@CajunLuke: getentist normalerweise auf Unix-, *BSD- und Linux-ähnlichen Systemen verfügbar. Ich habe meine Frage aktualisiert.
Also, was versuchst du damit zu tun getent? Hostnamen /etc/hostsvor der Verwendung von DNS auflösen?
Mein häufigster Anwendungsfall ist das Auflösen von Hostnamen /etc/hostsvor DNS, was für Webserver- und andere Netzwerktests nützlich ist. Aber ich (und andere Systemadministratoren) verwenden getent auch für andere Dinge, z. B. zur Fehlerbehebung bei LDAP.

Antworten (3)

dscacheutilist wahrscheinlich der beste Weg, dies zu tun. Es emuliert nicht den üblichen Suchprozess, sondern verwendet ihn, sodass Sie tatsächlich die gleichen Ergebnisse wie bei einer Standardsuche erhalten (einschließlich Caching, /etc/hosts, Computereinträge in Verzeichnisdiensten, DNS, mDNS für .local-Namen, 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

Werfen Sie einen Blick auf How to emulate Unix' getent with macOSX's dscl . Da Sie Skripte haben, die . verwenden getent, möchten Sie vielleicht ein Skript als Wrapper um dscl verwenden.

Es ist kein Hexenwerk, die Getent-Quelle von OpenSolaris (oder einem anderen Betriebssystem, ich würde eher eines der BSDs als Linux ausprobieren) zu stöbern und zu portieren; Ich habe das hauptsächlich dadurch zum Laufen gebracht, dass ich einfach die Dinge deaktiviert habe, für die macOS kein Äquivalent hatte (Netzmasken und Projekt - Solaris-spezifisch). Oder man kann es ziemlich einfach in Perl schreiben. Jemand hat vor langer Zeit ein begrenztes gemacht, und ich habe ein vollständigeres gemacht; Es unterstützt keine Ether, weil es dafür keine Standardsuche von Perl gibt, aber der Rest scheint gut zu funktionieren.

getent.pl