[Shell/Perl] Remplacer un MdP dans un fichier

Fermé
Julie - 23 juin 2008 à 23:47
 Julie - 24 juin 2008 à 02:24
Bonjour tout le monde !

Voilà, soit le fichier User avec comme champs cela :


idUser Nom MdP idGroupe Droit DateDernierMdP

0001;Martin;bXdtb;01;r;2008-06-12

Je souhaiterai faire un script en Shell ou en Perl ou même en Awk (mais je ne crois pas qu'on puisse écrire dans un fichier avec awk) qui prendrai en paramètre un idUser et un Mot de passe.

Le script changerai le mot de passe associé à l'idUser.

Voyez-vous comment je peux faire cela ?

D'avance merci beacoup !!
A voir également:

4 réponses

Salut,

oui je veux bien, fin si ça te dérange pas bien sur (vu l'heure)

Désolée, je connais pas grand chose en perl (j'apprend ^^)

Merci en tout cas !!
0
T'es partis où mon sauveur ? :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
24 juin 2008 à 00:59
Re

Ton sauveur est revenu. lol.
Je t'ai concocté un petit script en perl. Il est loin d'être parfait. Il y a pas mal de point à améliorer. A guise d'exercice ;)
Par exemple, masquer le mot de passe de l'utilisateur lorsqu'il le tape à l'écran, introduire un salt, ...

#!/usr/bin/perl
use Digest::MD5 qw(md5_base64);

echo 'user: ';
my $user=<STDIN>;
chomp $user;

echo 'pass: ';
<STDIN>;
chomp $pass; 
my $pass='$1$'.md5_base64($_);

open(FILE,'./etc/shadow') || die('erreur fichier');
while(<FILE>){
    s/^$user:.*:/$user:$pass:/;
}


-1
houu lala... alors là merci infiniment, tu m'enlèves une sacré épine du pied !!

Par contre le script devait prendre en paramètre les deux variables (idUser et le nouveauMdP à remplacer dans le fichier (user) oui c'est un fichier de test en faite, c'est pas le fichier /etc/shadow.

Mais c'est trop cool ce que tu as fais sérieux, je vais modifier le programme demain pour qu'il soit parfait.

Merci encore !

Pis bonne nuit si tu n'es pas encore couché :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 juin 2008 à 23:53
Salut
Si c'est pour changer un mot de passe, il y a la commande : passwd.
Si c'est pour bidouiller : en perl, c'est pas dur avec des regexp et du chiffrement.

Si tu veux que je creuse le perl, n'hésite pas.

Cdt
-1