[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |