daily pastebin goal
53%
SHARE
TWEET

Untitled

a guest Jan 13th, 2018 48 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/perl
  2.  
  3. use Net::LDAP;
  4. use Net::LDAP::LDIF;  # LDAP & LDIF module
  5.  
  6. $ldap = Net::LDAP->new('ldap.id.kent.ac.uk') or die "$@";
  7.  
  8. $ldif = Net::LDAP::LDIF->new("userinfo.ldif", "a") or die $!;
  9.  
  10. # begin session
  11. $reply = $ldap->bind;
  12.  
  13. open USERLIST, "userlist.txt" or die $!;
  14.  
  15. while(<USERLIST>)
  16. {
  17.         my $userid = $_;
  18.  
  19.         # search ldap server for users information
  20.         $result = $ldap->search(base => "o=uni", filter => "(uid=$userid)");
  21.  
  22.         foreach $entry ($result->entries)
  23.         {
  24.                 $localldap = Net::LDAP->new("localhost") or die "$@";
  25.  
  26.                 $localreply = $localldap->bind("cn=admin,dc=cs,dc=kent,dc=ac,dc=uk", password => "x1Nr7Hra");
  27.  
  28.                 $localresult = $localldap->search(base => "o=students", filter => "(uid=$userid)");
  29.  
  30.                 @results = $localresult->entries;
  31.  
  32.                 if(@results)
  33.                 {
  34.                         # ->modify to local instead of add
  35.                         last;
  36.                 }
  37.                 else
  38.                 {
  39.                         # ldapadd to local
  40.                         $localadd = $localldap->add("uid=".$userid.",ou=students,dc=cs,dc=kent,dc=ac,dc=uk",
  41.                                                 attr => [
  42.                                                         "cn" => $entry->get_value("cn"),
  43.                                                         "sn" => $entry->get_value("sn"),
  44.                                                         "objectClass" => "top",
  45.                                                         "objectClass" => "inetOrgPerson",
  46.                                                         "objectClass" => "organizationalPerson",
  47.                                                         "objectClass" => "posixAccount",
  48.                                                         "gidnumber" => "1000",
  49.                                                         "uidnumber" => "1000"
  50.                                                 ]);
  51.  
  52.  
  53.                         $ldif->write_entry($entry);
  54.                 }
  55.  
  56.                 $localldap->unbind;
  57.         }
  58. }
  59.  
  60. # end session
  61. $reply = $ldap->unbind;
RAW Paste Data
Top