Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Ruby
Ruby Le forum sur la programmation Ruby. Voir aussi la FAQ Ruby et les cours Ruby.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2011, 18h07   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2007
Messages : 48
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 48
Points : 12
Points : 12
Par défaut Problème Ruby SAMBA LDAP

Bonjour,

Voila je suis un débutant en ruby, un langage qui m'a redonné le goût de coder.
Voulant créer un petit script permettant la création à la volée d'utilisateurs samba sur le serveur ldap, je suis confronté à un petit problème.
Je sais générer un fichier ldif pour un utilisateur classique mais pas samba car je ne sais pas générer les mots de passes lmpassword et ntpassword sous ruby.

Mon script crée le ldif utilisateur, génère son mot de passe, sa home directory, puis ajoute cet utilisateur dans ldap et donne les bons droits à sa home dir.
Le tout est créer à partir d'une simple liste prénom nom dans un fichier.

Voici le script
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require 'fileutils'
require "digest"
 
def newpass( len )
    chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
    newpass = ""
    1.upto(len) { |i| newpass << chars[rand(chars.size-1)] }
    return newpass
end
 
def mkHomeDir ( homedir, username, groupId )
	FileUtils.mkdir_p ("#{homedir}/.windows/profile")
	FileUtils.cp_r('/etc/skel/.', homedir)
	FileUtils.chown_R('flex','flex', homedir)
 
end
 
#OUT FILES
ldapfile = open('etudiants.ldif','w') # sortie d'un ldif
csvfile = open('etudiants.csv','w') # sortie d'une liste en csv
logfile = open('etudiants.log','w') # TODO sortie erreur
 
listeEtu = File.readlines('etudiants.lst') # liste des utilisateurs nom prenom\n
 
etudiants = listeEtu.each { |ligne|
	tab = ligne.split(' ')
	nom =  tab[0].downcase
	prenom = tab[1].downcase
	username = prenom+'.'+nom
	username = username
	groupDir = 'etumphy'
	uid = 20000
	pass = newpass(6) 
 
ldap_user = <<-EOF
dn: uid=#{username},ou=Users,dc=iut-tp,dc=priv,dc=univ-lille1,dc=fr
uid: #{username}
cn: #{username}
sn: #{username}
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
userPassword: {CRYPT}#{pass.crypt("salt")}
shadowLastChange: 12291
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: #{uid}
gidNumber: 2000
homeDirectory: /home/#{groupDir}/#{username}
gecos: #{nom.upcase},#{prenom.downcase},,
 
EOF
 
# Writers 
ldapfile.write ldap_user
csvfile.write "#{nom},#{prenom},#{uid},2000,#{username},#{pass}\n" 
 
#teste si le dossier existe?
# si oui passer à l'autre utilisateur et logger 
 
# creation des dossiers necessaires
userpath = "/home/#{groupDir}/#{username}/"
mkHomeDir(userpath, username, 2000)
 
 
 
}
J'aimerais pouvoir créer des utilisateurs dans ldap sans passer par une commande externe et pouvoir tester les insertion pour voir si elles n'existent pas déjà.
j'ai trouvé une gem Active samba ldap mais je ne sais pas comment l'utiliser

Merci
ishikawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h53.


 
 
 
 
Partenaires

Hébergement Web