Date: Sun, 6 May 2018 11:21:32 +0000 (UTC) From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= <des@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r333292 - user/des/fbce/db Message-ID: <201805061121.w46BLWdB005220@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: des Date: Sun May 6 11:21:32 2018 New Revision: 333292 URL: https://svnweb.freebsd.org/changeset/base/333292 Log: Add gjb@'s LDAP-snarfing scripts. Added: user/des/fbce/db/genuserlist.pl (contents, props changed) user/des/fbce/db/genuserlist.sh (contents, props changed) Added: user/des/fbce/db/genuserlist.pl ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/fbce/db/genuserlist.pl Sun May 6 11:21:32 2018 (r333292) @@ -0,0 +1,72 @@ +#!/usr/bin/env perl +# +# $Id$ +# + +my $file = "$ARGV[0]"; +my $haveuid = 0; +my $havekey = 0; +my $uid = ''; + +sub usage() { + print "Usage: $ARGV[0] /path/to/ldap/data\n"; + exit (1); +} + +sub main() { + if (!$ARGV[0]) { + &usage(); + } + open(FILE, $file) or die("Could not open $file\n"); + while(<FILE>) { + chomp($_); + + # Skip commented lines. + if ($_ =~ m/^#/) { + next; + } + + # Skip empty lines, reset vars. + if ($_ =~ m/^$/) { + $haveuid = 0; + $uid = ''; + $havekey = 0; + next; + } + + # Found the uid field. Make sure it is not empty, then set + # haveuid=1. + if ($_ =~ m/^uid: /) { + $_ =~ s/^uid: //; + # The one unfortunate account *with* an ssh key. + if ($_ =~ m/backup/) { + next; + } + $uid = $_; + $haveuid = 1; + } + + # No need to search for a key if haveuid=0. + if ($haveuid eq 1) { + # Have the key. + if ($_ =~ m/^sshPublicKey::? /) { + $_ =~ s/^sshPublicKey::? //; + # It should not happen, but if a key datafield exists + # without a key, bail. + if ($_ =~ m//) { + $haveuid = 0; + next; + } + # Great. We have found a key for the UID. Since they + # have login access, they can vote. Good for them. + $havekey = 1; + print "$uid\n"; + $haveuid = 0; + } + } + } + close(FILE); +} + +&main(); + Added: user/des/fbce/db/genuserlist.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/fbce/db/genuserlist.sh Sun May 6 11:21:32 2018 (r333292) @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +users= +tmpfile="$(mktemp $HOME/tmp.XXXXXXXXXX)" + +main() { + cd $(realpath $(dirname $(basename ${0}))) + userlist="$(ldapsearch -x -b \ + ou=users,dc=freebsd,dc=org \ + -s children \ + '(&(objectClass=freebsdAccount)(cn=*)(uid=*)(sshPublicKey=*)(loginShell=*)(!(loginShell=/usr/sbin/nologin))(!(uid=*test))(!(uid=socsvn-import)))' \ + uid uidNumber loginShell sshPublicKey)" + printf "${userlist}" > ${tmpfile} + echo "Output written to: ${tmpfile}" + + ./genuserlist.pl ${tmpfile} > ./users.txt + + echo "Final output written to: users.txt" + +} + +main "$@"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805061121.w46BLWdB005220>