Làm cách nào tôi có thể cài đặt getent trên Snow Leopard?


9

Tôi có một số kịch bản yêu cầu tiện ích getent. Ngoài ra, tôi đã đọc một số mẹo hữu ích sử dụng getent .

getentlà một tiện ích Mạng có sẵn rộng rãi trên các hệ thống dựa trên Unix, * BSD và Linux. Công cụ này thường được sử dụng bởi Sysadmins và người dùng có quyền lực để tra cứu thông tin mạng (địa chỉ IP, v.v.). Theo như tên máy chủ, getentlà một trong số ít các công cụ sử dụng cả hai /etc/hostsvà DNS.

Như Wikipedia nói :

getent là một lệnh unix giúp người dùng có được các mục trong một số tệp văn bản quan trọng được gọi là cơ sở dữ liệu.

Điều quan trọng ở đây là getentsẽ tìm kiếm các dịch vụ cùng tên theo cùng thứ tự như hầu hết các ứng dụng trên một hệ thống giống như unix. Điều này làm cho nó vô giá khi gỡ lỗi hệ thống hoặc ứng dụng. Các công cụ thích dignslookupđặc biệt chỉ nhìn vào DNS, trong khi dsclhy vọng bạn đánh vần các dịch vụ tên mà bạn muốn tìm kiếm.

Tôi muốn sử dụng getentcho hai testcase:

  1. Phân tích cú pháp /etc/hoststrước khi truy vấn DNS . Ví dụ: nếu tôi thêm testhost.example.orgvào /etc/hosts, thì getent hosts testhost.example.orgnên sử dụng mục nhập từ /etc/hoststrước khi truy vấn DNS.

  2. Truy vấn LDAP bằng getent

MacPorts dường như không cung cấp gói cung cấp getent.

getenttồn tại trên Snow Leopard?


getentgì Nó làm gì? Những hệ thống nào thường có sẵn trên?
Cajunluke

3
Không có ánh xạ 1: 1 cho getentOS X vì OS X sử dụng DirectoryService để thực hiện phân giải trên những thứ như tên máy chủ. Bạn có thể cho một số getentví dụ sử dụng cụ thể ? Nó sẽ giúp bạn hiển thị cách tương ứng để có được thông tin đó trên OS X dễ dàng hơn.
Ian C.

@CajunLuke: getentthường có sẵn trên các hệ thống tương tự Unix, * BSD và Linux. Tôi cập nhật câu hỏi của tôi.
Stefan Lasiewski

Vậy bạn đang cố gắng làm gì với getent? Giải quyết tên máy chủ từ /etc/hoststrước khi sử dụng DNS?
Ian C.

Trường hợp sử dụng phổ biến nhất của tôi là giải quyết tên máy chủ từ /etc/hoststrước DNS, rất hữu ích cho Máy chủ web và các kiểm tra mạng khác. Nhưng tôi (và các sysadins khác) cũng sử dụng getent cho những thứ khác, chẳng hạn như xử lý sự cố LDAP.
Stefan Lasiewski

Câu trả lời:


9

dscacheutilcó lẽ là cách tốt nhất để làm điều này Nó không mô phỏng quá trình tìm kiếm thông thường, nó sử dụng nó, vì vậy bạn sẽ thực sự nhận được kết quả tương tự như một tra cứu tiêu chuẩn (bao gồm bộ đệm, / etc / hosts, bản ghi máy tính trong các dịch vụ thư mục, DNS, mDNS cho tên .local, Vân vân).

$ 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

Đây không phải là khoa học tên lửa để tranh giành nguồn nhận được từ OpenSolaris (hoặc một số HĐH khác, tôi sẽ thử một trong các BSD thay vì Linux) và chuyển nó; Tôi đã làm điều đó để hoạt động chủ yếu bằng cách vô hiệu hóa những thứ mà macOS không có bất kỳ tương đương nào (netmasks và dự án - cụ thể của Solaris). Hoặc người ta có thể viết nó bằng perl khá dễ dàng. Ai đó đã làm một cái giới hạn một thời gian dài trước đây, và tôi đã làm một cái hoàn chỉnh hơn; nó không hỗ trợ ete vì không có tra cứu tiêu chuẩn cho điều đó từ perl, nhưng phần còn lại có vẻ hoạt động tốt.

getent.pl

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.