Le Vendredi 29 Juillet 2005 08:53, CC a écrit :
> Selon Olivier Thauvin <[EMAIL PROTECTED]>:
> > Le Mercredi 27 Juillet 2005 22:35, cc a écrit :
> > > bonsoir,
> > > y a-t-il un spécialiste de perl dans la salle ?
> > > Je voudrais savoir s'il existe un moyen, au sein d'un script perl,
> > > d'avoir le même comportement que sed -i ou perl -pi -e 'commandes'
> > > fichier_a_traiter : que les modifications introduites par le script
> > > s'appliquent sur le fichier en cours de traitement (sans avoir recours
> > > à un fichir temporaire)
> >
> > perl -pi -e passe par un fichier temporaire, il ne fait que cacher la
> > chose, mais dans la pratique il y est obligé.
> >
> > tu peux faire une fonction qui fait ça cependant, mais utilise un fichier
> > temporaire, je ne vois pas comment faire autrement:
> >
> > sub perlpi {
> >     my ($fichier, $regexp) = @_;
> >     my $temp = "$fichier.$$";
> >     open my $fh, '<', $fichier or return 1;
> >     open my $tfh, '>', $temp or reutrn 1;
> >     while (<$fh>) {
> >             $_ =~ /$regexp/;
> >     }
> >     close $fh;
> >     close $tfh;
> >     unlink $fichier or return 1;
> >     rename $temp, $fichier or return 1;
> >     0
> > }
> >
> > UNTESTED !!!
>
> merci pour cette information. je vais poursuivre dans cette voie. je ne
> voudrais pas me planter puisqu'il s'agit de travailler sur /etc/passwd !
> question subsidiaire : peut-on (en perl) avoir un accès direct à un
> enregistrement ?

Ca dépends ce que tu appelle enregistrement, il y a des fonctions pour 
interroger la liste des compte, sinon faut écrire un petit parser pour 
l'/etc/passwd, ce qui est très simple, encore que des modules sur CPAN 
doivent davoir faire.

J'avais ecrit un script dans le temps pour extraire les comptes/group de 500 
ou supérieur et les recopier dans des chroots. Cf document attaché.

Attachment: passwd2chroot
Description: Perl program

Attachment: pgpbinEF05obX.pgp
Description: PGP signature

Répondre à