Bagaimana saya bisa menginstal getent di Snow Leopard?

9

Saya memiliki beberapa skrip yang memerlukan utilitas getent. Selain itu, saya telah membaca beberapa tips praktis yang menggunakan getent .

getentadalah utilitas Networking yang banyak tersedia di sistem berbasis Unix, * BSD dan Linux. Alat ini biasanya digunakan oleh Sysadmin dan pengguna listrik untuk mencari informasi jaringan (alamat IP, dll). Sejauh nama host pergi, getentadalah salah satu dari sedikit alat yang menggunakan keduanya /etc/hostsdan DNS.

Seperti yang dikatakan Wikipedia :

getent adalah perintah unix yang membantu pengguna mendapatkan entri dalam sejumlah file teks penting yang disebut basis data.

Yang penting di sini adalah bahwa getentakan mencari layanan nama yang sama dalam urutan yang sama seperti kebanyakan aplikasi pada sistem mirip-unix. Ini membuatnya sangat berharga ketika men-debug sistem atau masalah aplikasi. Alat menyukai digdan nslookupsecara khusus hanya melihat DNS, sementara dsclmengharapkan Anda untuk mengeja layanan nama yang ingin Anda cari.

Saya ingin menggunakan getentuntuk dua testcases:

  1. Parsing /etc/hostssebelum menanyakan DNS . Sebagai contoh, jika saya menambahkan testhost.example.orguntuk /etc/hosts, maka getent hosts testhost.example.orgharus menggunakan entri dari /etc/hostssebelum query DNS.

  2. Permintaan LDAP menggunakan getent

MacPorts tampaknya tidak menyediakan paket getent.

Apakah getentada di Snow Leopard?

Stefan Lasiewski
sumber
Apa getent? Apa fungsinya? Pada sistem apa biasanya tersedia?
Cajunluke
3
Tidak ada pemetaan 1: 1 untuk getentdi OS X karena OS X menggunakan DirectoryService untuk melakukan resolusi pada hal-hal seperti nama host. Bisakah Anda memberikan beberapa getentcontoh penggunaan khusus ? Itu akan membuat Anda menunjukkan cara yang sesuai untuk mendapatkan informasi pada OS X lebih mudah.
Ian C.
@CajunLuke: getentbiasanya tersedia di sistem Unix, * BSD dan Linux. Saya memperbarui pertanyaan saya.
Stefan Lasiewski
Jadi apa yang ingin Anda lakukan getent? Atasi nama host dari /etc/hostssebelum menggunakan DNS?
Ian C.
Kasus penggunaan saya yang paling umum adalah untuk menyelesaikan nama host dari /etc/hostssebelum DNS, yang berguna untuk server Web dan tes jaringan lainnya. Tapi saya (dan sysadmin lainnya) menggunakan getent untuk hal-hal lain juga, seperti troubleshooting LDAP.
Stefan Lasiewski

Jawaban:

9

dscacheutilmungkin cara terbaik untuk melakukan ini. Itu tidak meniru proses pencarian biasa, itu menggunakannya , sehingga Anda benar-benar akan mendapatkan hasil yang sama dengan pencarian standar (termasuk caching, / etc / hosts, catatan komputer dalam layanan direktori, DNS, mDNS untuk nama lokal., dll).

$ 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
sumber
2

Bukan ilmu roket untuk mengemis sumber getent dari OpenSolaris (atau OS lain, saya akan mencoba salah satu BSD daripada Linux) dan port; Saya mendapatkan itu untuk bekerja terutama dengan hanya menonaktifkan hal-hal yang macOS tidak memiliki padanan untuk (netmasks dan proyek - Solaris khusus). Atau seseorang dapat menulisnya dalam perl dengan cukup mudah. Seseorang pernah melakukan yang terbatas sejak lama, dan saya melakukan yang lebih lengkap; itu tidak mendukung eter karena tidak ada pencarian standar untuk itu dari perl, tetapi sisanya tampaknya berfungsi dengan baik.

getent.pl

R. Hamilton
sumber