Jak mogę zainstalować getent na Snow Leopard?

9

Mam kilka skryptów, które wymagają narzędzia getent. Ponadto przeczytałem kilka przydatnych porad dotyczących getent .

getentto narzędzie sieciowe, które jest szeroko dostępne w systemach Unix, * BSD i Linux. To narzędzie jest powszechnie używane przez Sysadmins i zaawansowanych użytkowników do wyszukiwania informacji o sieci (adresy IP itp.). Jeśli chodzi o nazwy hostów, getentjest to jedno z niewielu narzędzi, które używają zarówno /etc/hostsDNS, jak i DNS.

Jak mówi Wikipedia :

getent to komenda unix, która pomaga użytkownikowi uzyskać wpisy w wielu ważnych plikach tekstowych zwanych bazami danych.

Ważne jest, getentaby wyszukiwać te same usługi nazw w tej samej kolejności, jak większość aplikacji w systemie uniksowym. Dzięki temu jest nieoceniony podczas debugowania problemów z systemem lub aplikacją. Narzędzia, takie jak digi nslookupkonkretnie patrzeć tylko DNS, natomiast dsclspodziewa się przeliterować usługi nazwę chcesz przeszukać.

Chciałbym użyć getentdla dwóch przypadków testowych:

  1. Analizuj /etc/hostsprzed wysłaniem zapytania do DNS . Na przykład, jeśli dodam testhost.example.orgdo /etc/hosts, to getent hosts testhost.example.orgpowinienem użyć wpisu /etc/hostsprzed wysłaniem zapytania do DNS.

  2. Zapytanie LDAP przy użyciu getent

MacPorts nie wydaje się zapewniać pakietu getent.

Czy getentistnieje na Snow Leopard?

Stefan Lasiewski
źródło
Co to jest getent? Co to robi? Na jakich systemach jest zazwyczaj dostępny?
Cajunluke
3
W getentsystemie OS X nie ma mapowania 1: 1, ponieważ system OS X korzysta z DirectoryService w celu rozwiązywania problemów takich jak nazwy hostów. Czy możesz podać konkretne getentprzykłady użycia? Ułatwiłoby to pokazanie odpowiedniego sposobu na uzyskanie tych informacji w systemie OS X.
Ian C.
@CajunLuke: getentjest zazwyczaj dostępny w systemach Unix, * BSD i Linux-podobnych. Zaktualizowałem swoje pytanie.
Stefan Lasiewski
Więc z czym chcesz to zrobić getent? Czy rozwiązać nazwy hostów /etc/hostsprzed użyciem DNS?
Ian C.
Moim najczęstszym przypadkiem użycia jest rozpoznawanie nazw hostów /etc/hostssprzed DNS, co jest przydatne w przypadku serwera WWW i innych testów sieciowych. Ale ja (i inni administratorzy) używam getenta również do innych rzeczy, takich jak rozwiązywanie problemów z LDAP.
Stefan Lasiewski

Odpowiedzi:

9

dscacheutiljest prawdopodobnie najlepszym sposobem na zrobienie tego. Nie emuluje zwykłego procesu wyszukiwania, używa go, więc faktycznie uzyskasz takie same wyniki jak standardowe wyszukiwanie (w tym buforowanie, / etc / hosts, rekordy komputera w usługach katalogowych, DNS, mDNS dla nazw lokalnych, itp).

$ 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
Gordon Davisson
źródło
2

Nie jest nauką rakietową przeglądanie źródła getent z OpenSolarisa (lub innego systemu operacyjnego, spróbowałbym jednego z BSD zamiast Linuksa) i portowanie go; Sprawiłem, że działało to głównie poprzez wyłączenie rzeczy, dla których macOS nie miał żadnego odpowiednika (maski sieciowe i projekt - specyficzne dla Solaris). Lub można dość łatwo napisać w perlu. Ktoś dawno zrobił limitowany, a ja zrobiłem bardziej kompletny; nie obsługuje eterów, ponieważ nie ma standardowego wyszukiwania dla Perla, ale reszta wydaje się działać poprawnie.

getent.pl

R. Hamilton
źródło