OzzyOsbourne has asked for the wisdom of the Perl Monks concerning the following question:
I'm tring to write a script that finds orphaned home directories on the servers. Originally, I was just comparing the directories found on the servers to the user accounts (see below). If there was no match the share was an orphan.
The problem is marriage. When women marry, sometimes their user account will change, but the home directory will remain the same. It shouldn't be this way, but it happens. It's not like me to penalize people for getting married (I'm not the US Federal government after all), so I decided to compare the directories on the servers to the $homeDir variable to see if anyone uses the directory as their home regardless of their user name.
And that's where I have sat staring for a day or two. Thanks. Game on...
use strict; use Win32::NetAdmin qw(GetUsers UserGetAttributes); my (@accounts,%is_acct,$x,$key,$homeDir,$account); my $PDC='thePDC'; my $filter='FILTER_NORMAL_ACCOUNT'; my $out='//ws/share/orphan.txt'; my ($server,$usershare); my @servers=('server1','server2'); # Slurp all accounts into @accounts... GetUsers($PDC,$filter, \@accounts) or die "Can't get users $!"; undef %is_acct; # Create a hash with user accounts and home directory paths foreach $account(@accounts){ UserGetAttributes($PDC,$account,$x,$x,$x,$homeDir,$x,$x,$x) or die + "UserGetAttributes() failed: $^E"; $is_acct{$account}=$homeDir; } open OUT,">$out"; # Check for user shares on D$ and E$ and exit if not there... foreach $server (@servers){ my $dir1="//$server/e\$/usershare"; if (!(-e "$dir1")){#if directory doesn't exist try d$ $dir1="//$server/d\$/usershare"; if (!(-e "$dir1")){ next; } } # Read in the user shares from the servers opendir(DIR, $dir1) or die "can't opendir $dir1: $!"; my @dirs = grep { !/^\./ && -d "$dir1/$_" } readdir(DIR) or warn " +can't grep"; #weed out dots and get only dirs closedir DIR; foreach $usershare(@dirs){ my $userdir="$dir1/$usershare"; # PLACE WHERE PARTIAL EXTRACTION GOES... # used to read if(!exists $is_acct{$usershare}){ # print "$userdir: Orphan\n"; # } } } close OUT;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Partial extractions on hashes
by busunsl (Vicar) on May 11, 2001 at 16:23 UTC | |
by tye (Sage) on May 12, 2001 at 01:57 UTC | |
|
(jeffa) Re: Partial extractions on hashes
by jeffa (Bishop) on May 11, 2001 at 16:40 UTC | |
by busunsl (Vicar) on May 11, 2001 at 16:47 UTC | |
by davorg (Chancellor) on May 11, 2001 at 16:55 UTC | |
by busunsl (Vicar) on May 11, 2001 at 16:59 UTC | |
by OzzyOsbourne (Chaplain) on May 11, 2001 at 19:45 UTC |