138032Speter#!/bin/perl 238032Speter 338032Speter# 438032Speter# Convert GECOS information in password files to alias syntax. 538032Speter# 638032Speter# Contributed by Kari E. Hurtta <Kari.Hurtta@ozone.fmi.fi> 738032Speter# 838032Speter 938032Speterprint "# Generated from passwd by $0\n"; 1038032Speter 1164562Sgshapiro$wordpat = '([a-zA-Z]+?[a-zA-Z0-9-]*)?[a-zA-Z0-9]'; # 'DB2' 1238032Speterwhile (@a = getpwent) { 1338032Speter ($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = @a; 1438032Speter 1538032Speter ($fullname = $gcos) =~ s/,.*$//; 1638032Speter 1764562Sgshapiro if (!-d $dir || !-x $shell || $shell =~ m!/bin/(false|true)$!) { 1864562Sgshapiro print "$name: root\n"; # handle pseudo user 1938032Speter } 2038032Speter 2138032Speter $fullname =~ s/\.*[ _]+\.*/./g; 2264562Sgshapiro $fullname =~ tr [���������] [aaeouAAOU]; # <hakan@af.lu.se> 1997-06-15 2364562Sgshapiro next if (!$fullname || lc($fullname) eq $name); # avoid nonsense 2464562Sgshapiro if ($fullname =~ /^$wordpat(\.$wordpat)*$/o) { # Ulrich Windl 2538032Speter print "$fullname: $name\n"; 2638032Speter } else { 2764562Sgshapiro print "# $fullname: $name\n"; # avoid strange names 2838032Speter } 2938032Speter}; 3038032Speter 3138032Speterendpwent; 32