I am trying to lock out a batch of users. They are all in file "cleanup.txt".
All the users exist in "/etc/shadow". I have made a backup of "/etc/shadow" to 
play with.
I cannot figure out why I cannot match users from the file with usernames in 
field 0 
of "/etc/shadow.bak". I am writing to "newshadow" to be on the safe side.
If the line:

if ($fields[0] eq $user)

were ever true the script would be fine.
Can anyone see what I am doing wrong?
 
#!/opt/csw/bin/perl
open(SHADOW, "< /etc/shadow.bak");
@shadows = <SHADOW>;
open(NAMES, "< cleanup.txt");
@users = <NAMES>;
close(NAMES);
close(SHADOW);
open(NEWSHADOW, "> newshadow"); 
LINE: foreach $line (@shadows)
        {
                @fields = split /:/, $line;
                foreach $user (@users)
                {
                        if ($fields[0] eq $user)  #this is never true???
                        {
                                $fields[1] = '*LK*';
                                $joined = join(":", @fields);
                                print NEWSHADOW $joined;
                                next LINE;
                        }
                }
                $joined = join(":", @fields);
                print NEWSHADOW $joined;
        }
close(NEWSHADOW);


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to