#checks the guest account status across a range of IPs use strict; use Win32::AdminMisc; use Win32::NetAdmin qw(LocalGroupGetMembers LocalGroupIsMember UsersExist); use Net::Ping; my (%Hash, @accounts,$p); my $subnet='40'; open OUT, ">guestcheck.txt" or die "can't open outfile\n"; for(1..239){ chomp; my $ip="10.1.$subnet.$_"; $p = Net::Ping->new("icmp"); if ($p->ping("$ip")){ my $Domain="\\\\$ip"; my $User='Guest'; if (UsersExist($Domain, $User)){ Win32::AdminMisc::UserGetMiscAttributes( $Domain, $User, \%Hash ); my $Disable=$Hash{USER_FLAGS}&UF_ACCOUNTDISABLE; if ($Disable==2){ print "$ip: $User Disabled\t"; print OUT "$ip: $User Disabled\t"; } elsif ($Disable==0){ print "$ip: $User ENABLED\t"; print OUT "$ip: $User ENABLED\t"; } LocalGroupGetMembers($ip,"Administrators",\@accounts); if (@accounts&&LocalGroupIsMember($ip,"Administrators", "Guest")){ print OUT "Guest in Admin Group"; print "Guest in Admin Group"; } }else{ print "$ip: $User does not exist or Access Denied"; print OUT "$ip: $User does not exist or Access Denied"; } }else{ print "$ip: not available"; print OUT "$ip: not available"; } $p->close(); print "\n"; print OUT "\n" }