[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/sbin/ -> machineAdd.pl (source)

   1  #!/usr/bin/perl
   2  
   3  # $Id: machineAdd.pl 7769 2013-04-07 20:04:07Z keyser $ #
   4  
   5  ##### Script utilisé par samba pour l'ajout des machines dans l'annuaire#####
   6  
   7  use Net::Domain;
   8  use Unicode::String qw(latin1 utf8);
   9  use Net::LDAP;
  10  use POSIX;
  11  
  12  require '/etc/SeConfig.ph';
  13  
  14  die("Erreur d'argument.\n") if ($#ARGV != 1);
  15  ($machine_uid, $ipAddress) = @ARGV;
  16  $machine = $machine_uid;
  17  chop($machine);
  18  $machine =~ tr/A-Z/a-z/;
  19  # print "$machine\n";
  20  # print "$machine_uid\n";
  21  
  22  # Recherche LDAP de la machine dans la branche ou=Computers
  23  # ---------------------------------------------------------
  24  $ldap = Net::LDAP->new(
  25     "$slapdIp",
  26     port => "$slapdPort",
  27     debug => "$slapdDebug",
  28     timeout => "$slapdTimeout",
  29     version => "$slapdVersion"
  30  );
  31  $ldap->bind(); # Anonymous BIND
  32  
  33  # base => 'uid='.$machine_uid.','.$ComputersDn,
  34  $res = $ldap->search(
  35     base => 'uid='.$machine_uid.','.$computersDn,
  36     scope => 'base',
  37     filter => 'uid=*'
  38  );
  39  print "$machine_uid n'existe pas dans $computersDn\n"  if $res->code;
  40  if (($res->entries)[0]) {
  41     $uid = ($res->entries)[0]->get_value('uid');
  42     print "entree uid=$uid existante \n"
  43  }
  44  $ldap->unbind();
  45  
  46  if ($uid) {
  47  print "on supprime l'entree machine existante en \"uid=$machine_uid,$computersDn\"\n";
  48  
  49  system("/usr/share/se3/sbin/entryDel.pl \"uid=$machine_uid,$computersDn\"");
  50  }
  51  
  52  
  53  my $uidNumber = 30000; # n° à partir duquel la recherche est lancée
  54  my $increment = 1024; # doit etre une puissance de 2
  55  if (defined(getpwuid($uidNumber))) {
  56      do {
  57          $uidNumber += $increment;
  58      } while (defined(getpwuid($uidNumber)));
  59      
  60      $increment = int($increment / 2); 
  61      $uidNumber -= $increment;
  62      do {
  63          $increment = int($increment / 2); 
  64          if (defined(getpwuid($uidNumber))) {
  65              $uidNumber += $increment;
  66          } else {
  67              $uidNumber -= $increment;
  68          }
  69      } while $increment > 1;
  70      # la boucle suivante est normalement exécutée au plus une fois
  71      while (defined(getpwuid($uidNumber))) {
  72          $uidNumber++;
  73      }
  74  }
  75  
  76  # Gid Computers
  77  $gid = getgrnam('machines');
  78  
  79  $rid = 2 * $uidNumber + 1000;
  80  $pgrid = 2 * $gid + 1001;
  81  $sambaPasses = `/usr/share/se3/sbin/mkntpwd '$password'`;
  82  $sambaPasses =~ /(.*):(.*)/;
  83  $lmPassword = $1;
  84  $ntPassword = $2;
  85  $sambasid = `net getlocalsid | cut -d: -f2 | sed -e \"s/ //g\"`;
  86  
  87  # Génération du mot de passe crypté
  88  $salt  = chr (rand(75) + 48);
  89  $salt .= chr (rand(75) + 48);
  90  $crypt = crypt $password, $salt;
  91  
  92  @args = (
  93       "/usr/share/se3/sbin/entryAdd.pl",
  94       "uid=$machine_uid,$computersRdn,$baseDn",
  95       "uid=$machine_uid",
  96       "cn=$machine_uid",
  97       "objectClass=top",
  98       "objectClass=account",
  99       "objectClass=posixAccount",
 100       "objectClass=shadowAccount",
 101       "loginShell=/bin/false",
 102       "uidNumber=$uidNumber",
 103       "gidNumber=$gid",
 104       "homeDirectory=/dev/null",
 105       "userPassword=\{crypt\}$crypt",
 106       "gecos=machine"
 107       );
 108   
 109  $res = 0xffff & system @args;
 110  die("Erreur lors de l'ajoût de l'utilisateur.") if $res != 0;
 111  
 112  system("/usr/share/se3/shares/shares.avail/connexion.sh adminse3 $machine $ipAddress");
 113  # reconstruction pour wpkg
 114  if (-e "/usr/share/se3/scripts/update_hosts_profiles_xml.sh") {
 115      system("/usr/share/se3/scripts/update_hosts_profiles_xml.sh $computersRdn $parcsRdn $baseDn");
 116      }
 117  exit 0;
 118  
 119  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1