Greg Wooledge wrote: > Linda Walsh wrote: > > Greg Wooledge wrote: > > > getent(1) is fine where it's available, but it's not a standard tool, > > > so you can only use it on systems that have it. > > > Have you encountered it on other linux systems? > > It is present on Debian 3.1 (the oldest Debian system to which I have > access), OpenBSD 5.2, and Red Hat Enterprise Linux 5.7. It would require > some digging to find out exactly when it first appeared on each of those > operating systems. > > For comparison, it is NOT present on Red Hat 5.2 ("Apollo"). The one > from the 1990s, not RHEL 5.2. I utterly despise the fact that it takes > me three sentences to explain a version number.
I am pretty sure that getent is not available on HP-UX for an example of a classic legacy Unix system. For examples where getent is not present I wouldn't go looking at old GNU/Linux systems but on legacy Unix systems. Because those tend to be impossible to upgrade and so are often using a variety of releases. For example HP-UX 10.20 (the best release ever) is still in use and it is ancient. :-) > That's just asking for trouble. I don't know every arcane Unix > authentication system out there, but I'd imagine at least one of them > can't be used that way. Plus, there's the issue of determining which > authentication system you're actually supposed to pull the account > information from. > > imadev:~$ grep '^wooledg' /etc/passwd > > Oh, look. I'm not in /etc/passwd. No, wait, maybe I am: > > imadev:~$ grep '+\{0,1\}wooledg' /etc/passwd > +wooledg::-24:-24:::/usr/local/bin/bash > > Right, the plus sign means I'm really in NIS: Actually you still need one more thing. You need to look in the /etc/nsswitch.conf file for the "passwd" entry and look to see if it says "compat" for the '+' to be working. Or if it says lists "nis" or "nis+" in the fields. And if so then the order specifies priority. And there are other options too that would be required to be parsed to be 100% correct. > imadev:~$ ypmatch wooledg passwd.byname | awk -F: '{$2="xxxx"; OFS=":"; > print}' > wooledg:xxxx:563:22:Greg Wooledge:/net/home/wooledg:/bin/ksh > > So to get my home directory by mimicking the operating system's account > lookup procedures, I have to make at least 3 separate checks, and I may > have to merge data from 2 of those. We are now up to at least four checks. :-) Bob