Advertisement
Guest User

Untitled

a guest
May 25th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use Net::LDAP;
  4. use Data::Dumper;
  5.  
  6. my $LDAPSERVER = '192.168.1.2';
  7. my $ADUSERNAME = 'username@domain.local';
  8. my $ADPASSWORD = '********';
  9. my $LDAPBASE = 'CN=Users,DC=domain,DC=local';
  10.  
  11.  
  12. $ad = Net::LDAP->new($LDAPSERVER) or die "$@";
  13.  
  14. $ad->bind($ADUSERNAME, password=>$ADPASSWORD) or die "$@";
  15.  
  16. # $schema = $ad->schema();
  17. # die Dumper($schema);
  18.  
  19. my $base = $LDAPBASE;
  20. my $attrs = ['sn', 'givenName', 'pwdLastSet', 'userAccountControl', 'accountExpires'];
  21. my $filter = 'sn=*';
  22.  
  23. my @results = ($ad->search(base=>$base, filter=>$filter, attrs=>$attrs))->sorted('sn','givenName');
  24. my $count = @results;
  25.  
  26. my $entry;
  27. my $nttime;
  28. my $userName;
  29. my $pwdLastSet;
  30. my $uac;
  31. my $expires;
  32.  
  33. format STDOUT =
  34. @<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @>>>>> @>>>>>>>>>>>>>>>>>>>>
  35. $userName, $pwdLastSet,$uac, $expires
  36. .
  37.  
  38. for (my $i=0; $i<$count; $i++) {
  39. $entry = $results[$i];
  40.  
  41. $nttime = $entry->get_value('pwdLastSet');
  42. $nttime =~ s/[0-9]{7}$//;
  43. # See Time::NT module as reference for the NT->unix time conversion
  44. my ($sec, $min, $hour, $mday, $mon, $year) = localtime(int($nttime)-11644473600);
  45. $pwdLastSet = sprintf('%04d-%02d-%02d', $year+1900, $mon+1, $mday);
  46.  
  47. # Only print accounts that are not disabled and with passwords that expire
  48.  
  49.  
  50. $userName = $entry->get_value('sn') . ", " . $entry->get_value('givenName');
  51. $uac = $entry->get_value('userAccountControl');
  52. $expires = $entry->get_value('accountExpires');
  53.  
  54. write unless (
  55. ($entry->get_value('userAccountControl') & 2) || # disabled users
  56. ($entry->get_value('userAccountControl') & 65536) # nonexpiring passwords
  57. );
  58. }
  59.  
  60. $ad->unbind;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement