OVH Cloud OVH Cloud

Script pour samba en perl

2 réponses
Avatar
Leenox
bonjour,=20
j'ai une liste d'utilisateur du type suivant nomm=E9 "utilisateurs.txt": lo=
gin,group,/home donc concr=E9tement jai des s=E9quences du type:

yoann,administrateur,/data/samba/home/yoann
teddy,developpeur,/data/samba/home/teddy
tibo,commercial,/data/samba/home/tibo
....
etc

Chaque champs =E9tant s=E9par=E9 par une virgule, j'ai donc voulu faire un =
script en perl pour automatiser tout ca mais je n'arrive pas =E0 faire le s=
cript pour parcourir le fichier et en extraire le login pour pouvoir ensuit=
e comparer au fichier /etc/passwd de mani=E8re a savoir si l'utilisateur ex=
iste ou non pour pouvoir le cr=E9er.
Voici mon code meme si il est cour:

#!/usr/bin/perl -w

open (FILEHANDLE, "<utilisateurs.txt") or die ("Impossible d'ouvrir utilisa=
teurs.txt");

while (<FILEHANDLE>)
{
@list =3D split(/,/, <FILEHANDLE>);
foreach $mot (@list) {
print $mot."\n";
}
}
close (FILEHANDLE);

Je suis bloqu=E9 a ce niveau..

2 réponses

Avatar
manioul
--=-ZrbxmPrjN/GATluLTYe2
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Le jeudi 17 mars 2005 à 17:28 +0100, Leenox a écrit :
bonjour,


Coucou!
j'ai une liste d'utilisateur du type suivant nommé "utilisateurs.txt": login,group,/home donc concrétement jai des séquences du type:

yoann,administrateur,/data/samba/home/yoann
teddy,developpeur,/data/samba/home/teddy
tibo,commercial,/data/samba/home/tibo
....
etc

Chaque champs étant séparé par une virgule, j'ai donc voulu faire u n script en perl pour automatiser tout ca mais je n'arrive pas à faire le script pour parcourir le fichier et en extraire le login pour pouvoir ensu ite comparer au fichier /etc/passwd de manière a savoir si l'utilisateur existe ou non pour pouvoir le créer.
Voici mon code meme si il est cour:

#!/usr/bin/perl -w

open (FILEHANDLE, "<utilisateurs.txt") or die ("Impossible d'ouvrir utili sateurs.txt");

while (<FILEHANDLE>)
{


+ chomp();
- @list = split(/,/, <FILEHANDLE>);
+ @list = split (/,/);
foreach $mot (@list) {
print $mot."n";
}
}
close (FILEHANDLE);

Je suis bloqué a ce niveau..


Ce n'est pas le handle qu'il faut réinterroger, mais la variable $_
implicite ici dans la fonction split.
De même, tu peux avantageusement améliorer ton code dans la boucle
foreach:
foreach (@list) {
print $_ . "n";
}




--
-----------------------------------------------------------------------
Ma clé GPG est disponible sur http://www.keyserver.net
-----------------------------------------------------------------------
_____________________________________________________
| Protégez votre vie privée: |
|||/ | - Signez/chiffrez vos messages. __|
q o - p | Respectez celle des autres: | /
__mn___^_/_nm__| - Masquez les destinataires de vos mailings |/
|__________________________________________________/


--=-ZrbxmPrjN/GATluLTYe2
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: Ceci est une partie de message
=?ISO-8859-1?Q?numériquement?= =?ISO-8859-1?Q?_signée?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCObI+csdrgK9aigMRAgrjAKCK2PB73T22j3D68rwwMw2w5u7G0wCeL83x
1FY2IUZnT/t3Q9ZEYrtS6gU =IZQw
-----END PGP SIGNATURE-----

--=-ZrbxmPrjN/GATluLTYe2--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Thu, Mar 17, 2005 at 05:28:23PM +0100, Leenox wrote:
yoann,administrateur,/data/samba/home/yoann
teddy,developpeur,/data/samba/home/teddy
tibo,commercial,/data/samba/home/tibo
....
etc

Chaque champs étant séparé par une virgule, j'ai donc voulu faire un script en perl pour automatiser tout ca mais je n'arrive pas à faire le script pour parcourir le fichier et en extraire le login pour pouvoir ensuite comparer au fichier /etc/passwd de manière a savoir si l'utilisateur existe ou non pour pouvoir le créer.
Voici mon code meme si il est cour:

#!/usr/bin/perl -w

open (FILEHANDLE, "<utilisateurs.txt") or die ("Impossible d'ouvrir utilisateurs.txt");



Ces jours-ci on essaie d'utiliser des variables:

open $file, "utilisateurs.txt" or ...

while (<FILEHANDLE>)
{
@list = split(/,/, <FILEHANDLE>);
foreach $mot (@list) {
print $mot."n";
}
}
close (FILEHANDLE);



Ben oui:

while ($ligne = <$file>) {
@list = split /,/, $ligne;
...
}


Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact