X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-sshlist;fp=ud-sshlist;h=279dc98f9b9563014ab00c69d8d9156f97174ff3;hb=bd63e867238eb6d8c5756f43f7e2f4681eb11098;hp=0000000000000000000000000000000000000000;hpb=fb6e12faf7e0f8dde1e42b0904a019c30bd68779;p=mirror%2Fuserdir-ldap.git diff --git a/ud-sshlist b/ud-sshlist new file mode 100755 index 0000000..279dc98 --- /dev/null +++ b/ud-sshlist @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- mode: python -*- +# This script takes a list of .forward files and generates a list of colon +# delimited fields for import into a ldap directory. The fields represent +# the user and their email forwarding. +# +# A sample invokation.. +# cd /home +# find -name ".foward" -maxdepth 2 | mkforwardlist | sort | less +# Then correct any invalid forward files if possible. After that stash the +# output in a file, remove the invalid lines and import it. +# +# It also understand .qmail type files + +import string, re, time, getopt, os, sys, pwd, stat; + +SSHAuthSplit = re.compile('^(.* )?(\d+) (\d+) (\d+) ?(.+)$'); + +while (1): + File = string.strip(sys.stdin.readline()); + if File == "": + break; + + # Attempt to determine the UID + try: + User = pwd.getpwuid(os.stat(File)[stat.ST_UID])[0]; + except KeyError: + print "Invalid0", File; + continue; + + # Read the first two non comment non empty lines + Forward = open(File,"r"); + Lines = []; + while (1): + Line = string.strip(Forward.readline()); + if Line == "": + break; + if Line[0] == '#' or Line[0] == '\n': + continue; + if SSHAuthSplit.match(Line) == None: + print "Bad line", File; + else: + Lines.append(Line); + + for x in Lines: + print User + ":",x;