如何在Snow Leopard上安装getent?


9

我有几个需要实用程序的脚本getent。此外,我还阅读了一些使用getent的便捷技巧。

getent是一个联网实用程序,可在Unix,* BSD和基于Linux的系统上广泛使用。系统管理员和高级用户通常使用此工具来查找网络信息(IP地址等)。就主机名而言,它getent是同时使用/etc/hosts和DNS 的少数工具之一。

正如维基百科所说

getent是一个unix命令,可帮助用户获取许多重要的文本文件(称为数据库)中的条目。

这里重要的是,getent它将按照与类Unix系统上的大多数应用程序相同的顺序搜索相同的名称服务。这在调试系统或应用程序故障时非常有用。像工具dignslookup具体看只有DNS,而dscl希望你拼写出你想搜索的名称服务。

我想getent用于两个测试用例:

  1. 解析/etc/hosts查询DNS之前。例如,如果我添加testhost.example.org/etc/hostsgetent hosts testhost.example.org则应/etc/hosts在查询DNS之前使用from的条目。

  2. 使用getent查询LDAP

MacPorts似乎没有提供提供的软件包getent

getent雪豹上是否存在?


什么getent啊 它有什么作用?通常在什么系统上可用?
Cajunluke 2012年

3
getent在OS X上没有1:1映射,因为OS X使用DirectoryService对主机名之类的内容进行解析。您可以举一些具体的getent使用示例吗?它将向您展示在OS X上更轻松地获取该信息的相应方法。
伊恩·C

@CajunLuke:getent通常在Unix,* BSD和类似Linux的系统上可用。我更新了我的问题。
Stefan Lasiewski 2012年

那你想做getent什么呢?从/etc/hosts使用DNS之前解析主机名?
伊恩·C

我最常见的用例是从/etc/hostsDNS之前解析主机名,这对Web服务器和其他网络测试很有用。但是我(和其他系统管理员)也将getent用于其他方面,例如对LDAP进行故障排除。
Stefan Lasiewski'3

Answers:


9

dscacheutil可能是做到这一点的最好方法。它不会模拟通常的搜索过程,而是使用它,因此您实际上将获得与标准查找相同的结果(包括缓存,/ etc / hosts,目录服务中的计算机记录,DNS,.local名称的mDNS,等等)。

$ 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

从OpenSolaris(或其他操作系统,我会尝试其中一种BSD而不是Linux)中获取源代码并移植它并不是火箭科学。我主要通过仅禁用macOS所没有的功能(网络掩码和项目-特定于Solaris)来使它工作。或者可以很容易地在perl中编写它。很久以前有人做了一个有限的,而我做了一个比较完整的。它不支持乙醚,因为没有从perl进行标准查找,但是其余的似乎都可以。

getent.pl

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.