Ich habe mehrere Skripte, die das Dienstprogramm benötigen getent
. Außerdem habe ich einige praktische Tipps gelesen, die getent verwenden .
getent
ist 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, getent
ist eines der wenigen Tools, das sowohl /etc/hosts
DNS 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 getent
die 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 dig
und nslookup
speziell schauen sich nur DNS an, während dscl
erwartet wird, dass Sie die Namensdienste buchstabieren, nach denen Sie suchen möchten.
Ich möchte getent
für zwei Testfälle verwenden:
Vor /etc/hosts
dem Abfragen von DNS parsen . Wenn ich beispielsweise zu hinzufüge testhost.example.org
, /etc/hosts
sollte getent hosts testhost.example.org
der Eintrag von verwendet werden , /etc/hosts
bevor DNS abgefragt wird.
MacPorts scheint kein Paket zur Verfügung zu stellen getent
.
Existiert getent
auf Snow Leopard?
dscacheutil
ist 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.
Cajunluke
getent
? Was tut es? Auf welchen Systemen ist es normalerweise verfügbar?Jan C.
getent
OS X, da OS X DirectoryService verwendet , um Dinge wie Hostnamen aufzulösen. Können Sie konkretegetent
Anwendungsbeispiele nennen? Es würde Ihnen den entsprechenden Weg zeigen, wie Sie diese Informationen unter OS X einfacher erhalten.Stefan Lasiewski
getent
ist normalerweise auf Unix-, *BSD- und Linux-ähnlichen Systemen verfügbar. Ich habe meine Frage aktualisiert.Jan C.
getent
? Hostnamen/etc/hosts
vor der Verwendung von DNS auflösen?Stefan Lasiewski
/etc/hosts
vor 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.