I have happily been having a script running to add users into groups.
Suddenly one of the scripts on 1 machine stopped working, while the
other machine, setup like the first machine works, it's the same script
in both, whats altered is the machine name. I even copyed the script
from the machine that works, altered tha few values, and still it gave
me the same error! I am wondering is this machin dependant, or is there
something weird here..

Its kinda big so bare with me..as you can see it's the same routine over
and over again. It works on one machine not the other. And its W2K..i
get this error from the script:

Can't populate local group list: Overlapped I/O operation is in progress

Here is the script..
use strict;
use Win32API::Net;
my
(@users,$user,@lusers,@l,$w,@diffusers,@user,@susers,@slusers,@sdiffuser
s,$suser,@suser,%hash,$fullname,@musers,@mdiffusers);

my $group = "SG-SEKI-SECURITY-SERVER-C-G";
my $dserver = "SEKIDCC01";
my $lserver = "\\\\SEKIMSW07";
my $lgroup = "UNLOCK_ACCESS1";
my $sgroup = "SG-SEKI-SECURITY-SERVER2-C-G";
my $lgroup2 = "UNLOCK_ACCESS2";
my $logfile = "c:\\temp\\sec-server.log";
my $mgroup = "SG-GBMC-SECURITY-SERVER-C-G";
my $mailadress = "removed";
if (-e $logfile)
{
    unlink $logfile or die "cant delete old $logfile\n";
}
Win32API::Net::GroupGetUsers($dserver, $group, \@users) or die "Can't
get global group list: $^E\n";
Win32API::Net::LocalGroupGetMembers($lserver, $lgroup, \@lusers) or die
"Can't get local group list: $^E\n";
#UserGetInfo(server, user, level, hash)
{
        my (%h1, %h2);
        @h1{@users} = ();
        @h2{@lusers} = ();
        for my $key (keys %h1) {
                push @diffusers => $key unless exists $h2{$key};
        }
}
print "These users differ between groups: @diffusers\n";
foreach $user(@diffusers){
    Win32API::Net::UserGetInfo($dserver, $user, 11, \%hash);
    $user = "corpusers\\$user\n";
    push (@user,$user);
    chomp @user;
    print "Adding @user to $lserver $lgroup\n";
    Win32API::Net::LocalGroupAddMembers($lserver, $lgroup, \@user) or
die "Can't populate local group list: $^E\n";
    if (@diffusers)
    {
        open LOG, ">>$logfile" or die "cant open $logfile\n";
        chomp $user;
        print LOG "KISTA $user ($hash{fullName}) Added to Security
Server SEKIMSW07 local group UNLOCK_ACCESS1\n";
    }
   @user =(); 
}    

Win32API::Net::GroupGetUsers($dserver, $sgroup, \@susers) or die "Can't
get global group list: $^E\n";
Win32API::Net::LocalGroupGetMembers($lserver, $lgroup2, \@slusers) or
die "Can't get local group list: $^E\n";
{
        my (%h1, %h2);
        @h1{@susers} = ();
        @h2{@slusers} = ();
        for my $key (keys %h1) {
                push @sdiffusers => $key unless exists $h2{$key};
        }
}
print "These users differ between groups: @sdiffusers\n";

foreach $suser(@sdiffusers){
    Win32API::Net::UserGetInfo($dserver, $suser, 11, \%hash);
    $suser = "corpusers\\$suser\n";
    push (@suser,$suser);
    chomp @suser;
    print "Adding @suser to $lserver $lgroup2\n";
    Win32API::Net::LocalGroupAddMembers($lserver, $lgroup2, \@suser) or
die "Can't populate local group list: $^E\n";
    if (@sdiffusers)
    {
        open LOG, ">>$logfile" or die "cant open $logfile\n";
        chomp $suser;
        print LOG "KISTA $suser ($hash{fullName}) Added to Security
Server SEKIMSW07 local group UNLOCK_ACCESS2\n";
    }
   @suser =(); 
}

Win32API::Net::GroupGetUsers($dserver, $mgroup, \@musers) or die "Can't
get global group list: $^E\n";
Win32API::Net::LocalGroupGetMembers($lserver, $lgroup, \@lusers) or die
"Can't get local group list: $^E\n";
#UserGetInfo(server, user, level, hash)
{
        my (%h1, %h2);
        @h1{@musers} = ();
        @h2{@lusers} = ();
        for my $key (keys %h1) {
                push @mdiffusers => $key unless exists $h2{$key};
        }
}
print "These users differ between groups: @mdiffusers\n";
foreach $user(@mdiffusers){
    Win32API::Net::UserGetInfo($dserver, $user, 11, \%hash);
    $user = "corpusers\\$user\n";
    push (@user,$user);
    chomp @user;
    print "Adding @user to $lserver $lgroup\n";
    Win32API::Net::LocalGroupAddMembers($lserver, $lgroup, \@user) or
die "Can't populate local group list: $^E\n";
    if (@diffusers)
    {
        open LOG, ">>$logfile" or die "cant open $logfile\n";
        chomp $user;
        print LOG "MANCHESTER $user ($hash{fullName}) Added to Security
Server SEKIMSW07 local group UNLOCK_ACCESS1\n";
    }
   @user =(); 
}    
close LOG;
if (-e $logfile){
    print "sending mail notification..\n";
    `blat $logfile -t $mailadress -s \"Users added to Security Server\"`
or die "cannot send mail\n";
}






Reply via email to