#!/usr/bin/perl # ************************************************************************ # for Linux and UNIX-Like | made by alain Adelmar * # remd: petit script pour me rappeler les differents mot de passe. * # coord s'appelle directement depuis la console et fourni les coordonnées* # en clair qui correspondent a un mot ou chiffre issu d'un fichier cripté* # usage: coord [-euv] [mot ou chiffre] * # -e pour edit, permet d'éditer une entrée * # -u pour usage, donne la bonne façon d'ouvrir ce script * # -v pour version retourne le numéro de version du script * # -------------------------------------------------------------- * # Ce script fonctionne bien * # * # * # alain Adelmar Lundi 19 avril 2010 15:51:15 version: 1.2 * #************************************************************************* #$Id: coord,v 1.2 2010/04/19 14:36:08 alain Exp alain $ use strict; #use warnings; #-------------- # traitement du temps pour date et heure en français (my $sec,my $min,my $heure,my $mjour,my $mois,my $annee,my $sjour,my $ajour,my $isdst) = localtime(time); my @lssjour = qw( Dim Lun Mar Mer Jeu Ven Sam); my @lssmois = qw ( Janvier Fevrier Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Decembre ); my $french_date_now = "$lssjour[$sjour] $mjour $lssmois[$mois] " . ($annee+=1900) . " - $heure:$min:$sec"; #-------------------------- use Cwd; my $dir = getcwd; my $lx = ("*" x 25) x 2; our $version = "version: 1.1\n"; my $usage = "usage: $0 [-euv] [mot ou chiffre]\n\t-e pour edit, permet d'éditer une entrée\n" . "\t-u pour usage, donne la bonne façon d'ouvrir ce script\n\t-v pour version retourne le numéro de version du script\n$lx\n"; # pour l'adressage/les systeme UNIX, Linux, cygwin ou autre (/) et ceux de M$ (\) my @gnul = ( "\\", "\/"); #pas mal because $gnul[$gnus] sera toujours bon, je suis trop fort my $gnus = 0; my $cong= "this is a real gnu OS, congratulation\n"; if ($^O =~ /[msys|cygwin|linux]$/) { $gnus++; print "$cong"; } elsif ($dir =~ /\//) { $gnus++; print "$cong"; } else { print "Vous etes sur une machine Petite et Molle (MicroSoft), beuuurk...\n"; print "enfin quoi, sur un OS de merde\n"; print "gnus ne vaut que $gnus, et en plus, vos fichiers sont du style:\n"; print "C:" . "$gnul[$gnus]" . "caca" . "$gnul[$gnus]boudin au lieu de /super/extra\n os: $^O \n"; print "Mais $0 fonctionnera tout de meme sur cette grosse chiote de systeme\n"; } my $gnup = $gnul[$gnus]; #------------------------------------------------------- # par defaut le fichier sera a /home/login/bin/mescoord.csv my $file = "$dir$gnup" . "bin$gnup" . "mescoord.csv"; # trouver le fichier contenant les paramètres my $rootfile = "mescoord.csv"; if (-e "$dir$gnup$rootfile") { print "ok: $file\n"; $file = "$dir$gnup$rootfile"; } elsif (-e "$dir$gnup" . "bin$gnup$rootfile") { print "ok: $file\n"; $file = "$dir$gnup" . "bin$gnup$rootfile"; } else { print "Reinstaller votre fichier mescoord.csv dans HOME/login/bin/\n" . "ou creer un fichier mescoord.csv (vide) dans HOME/login/bin/\n"; die "erreur de PATH ou initialisation sans l'option -e\n"; } #------------------------------cartouche -------------- my $mode = "change"; my $fr_date_file = &datefile($mode); my $moi = " Adelmar alain (aadelmar\@numericable.fr)"; my $head_lbl= "script $0\nécris par $moi\nle $fr_date_file\nexecuter le $french_date_now\n"; my $head_lbl_console = "$lx\nscript: $0\nécris par: $moi\nle: $fr_date_file\nexecuter le: $french_date_now\n$lx\n"; sub datefile { ($mode = 8) if ($mode=~ /^a/); ($mode = 9) if ($mode=~ /^m/); ($mode = 10) if ($mode=~ /^c/); my $datenum = ((stat($file))[$mode]); (my $sec,my $min,my $heure,my $mjour,my $mois,my $annee,my $sjour,my $ajour,my $isdst) = (localtime($datenum)); my $fr_date_file = "$lssjour[$sjour] $mjour $lssmois[$mois] " . ($annee+=1900) . " - $heure:$min:$sec"; return $fr_date_file; } #-------------------------------------------- # initialisation vars my @contenu = my @newcontenu = my @truc = my @phrase = (); my $ref = my $respond = ""; my $argv = 0; # 1er partie avec argument qui ne traite qu'un seul mot sur une ligne. if($ARGV[0] ne "") { if ($ARGV[0] =~ /^-u|usage/) { print "\n$head_lbl_console\n$usage\n"; } elsif ($ARGV[0] =~ /^-v|version/) { print "\n$head_lbl_console\n$version\n"; } elsif ($ARGV[0] eq "-e") { print "\n$head_lbl_console\nmode edition:\n"; if($ARGV[1] ne "") { $ref = $ARGV[2]; } &edit; } elsif ($ARGV[0] =~ /^\"|\"$/) { s/^\"()\"$/$1/; $ref = $1; $argv = 1; &lire_mescoord; print "\n$head_lbl_console\nvos paramètres:\n"; &traiter($ref); } else { $ref = $ARGV[0]; $argv = 1; &lire_mescoord; print "\n$head_lbl_console\nvos paramètres:\n"; &traiter($ref); } } else { print "\n$lx\nVersion longue de coord (sans argument = accés au menu) *\nA noter: Vous auriez pu entrer un mot (label) en *\nguise d'argument, pensez y la prochaine fois. *\n _ alain Adelmar _ *\n$lx\n"; $argv = 0; &menu; } sub lire_mescoord { open(F, "$file") or die "Ouverture de $file impossible $!"; @contenu = ; close F || die "fermeture de $file impossible $!"; } sub traiter { foreach (@contenu) { (@truc) = split(/,/, $_); # print "$truc[0]\n"; if ($truc[0]=~ /^$ref/) { print shift(@truc) . "\n"; foreach(@truc) { print "\t$_\n"; } #print "$_\n"; } } } sub edit { my $first = 0; print "\n\nVeuillez entrer votre mot(qui restera en clair)\nsuivi des differents parametres et password les uns derriere les autre,\n" . "juste separe d'une virgule.\n exp:\nmyspace,toto,T4gZZb12,toto\@lapiequichante.fr\nentrer [quitter] pour sortir\n\n"; while ($respond !~ /^quit/i) { print "donc (votre ligne ou (quitter):\n"; chomp($respond =); (my @phrase) = split(/,/, $respond); print "verification, vous avez entrer\n"; if ($first == 0) { print "seul $phrase[0] sera entrer en clair et vous permettra de retrouver les autres parametres ci-dessous\n\n"; $first++; } foreach (@phrase) { print "$_\t"; } print "\netes vous ok pour ces parametres\n"; chomp(my $oui = ); if($oui =~ /^n/i) { print "donc pas ok, veuillez recommencer ou [quitter] pour sortir\n"; } else { &ecrit || print "ça passe pas $!";; } } } sub ecrit { if ($respond =~ /^quit/i) { print "ok man, tes enregistrements sont dans la boite, tchao !\n"; } else { open F, ">>$file" or die "impossible d'ouvrir en ecriture $file $!"; print F "$respond\n"; $respond = ""; close F || die "impossible de fermer $file $!"; } } END;