#!/opt/bin/perl5 # ######################################################################### # # # Program to extract certain users out of the sendmail alias file # # # ######################################################################### # # # Version 1.0 - Written 05.11.95 by Steffen Beyer # # # ######################################################################### # # # Copyright (C) 1995 by software design & management GmbH & Co. KG # # # ######################################################################### # # Some internal variables: # $version = 'version 1.0'; # $self = $0; $self =~ s!^.*/!!; # $aliasfile = "/etc/aliases"; # # Process alias file: # unless(open(ALIASFILE, "<$aliasfile")) { die "$self: can't read '$aliasfile': $!\n"; } # $state = 0; # while () { if ($state == 0) { if (/^#E\s+USER\s+(\S+)\s+\((\S+)\)/) { $login = $1; $domain = $2; $state = 1; } } elsif ($state == 1) { if (/^#C\s+\S+;/) { $state = 2; } else { $state = 0; } } elsif ($state == 2) { if (/^#D\s+USER\s+\S+\s+\(\s*(.+?)\s*\)/) { $name = $1; if ($domain eq "rat") { $name =~ s/[\t\r\n\f]/ /g; $name =~ s/ / /g; $name =~ s/^\s*//; $name =~ s/\s*$//; $name =~ s/\s*\(.*\)\s*$//; $name =~ s/^Dr\.(\S)/Dr. $1/; $name =~ m/\s*(\S+)\s*$/; $lastname = $1; $firstname = $`; $firstname =~ s/^\s*(Dr\.)?\s*//; $firstname =~ s/\s*$//; if ($lastname eq "") { $lastname = $firstname; $firstname = ""; } if ($firstname eq "") { $user = $lastname; } else { $user = "$lastname $firstname"; } $user =~ tr/A-Z/a-z/; if (($user ne "") && ($usertable{$user} eq "")) { $usertable{$user} = "$login:$name"; } } } $state = 0; } else { } } # close(ALIASFILE); # $uid = 12008; $gid = 5700; # foreach $user (sort keys(%usertable)) { ($login, $name) = split(/:/,$usertable{$user}); print "$login:OAfeitrhEUUBI:$uid:$gid:$name:/u/$login:/usr/local/bin/tcsh\n"; $uid++; } # # Done. #