Script

[Résolu/Fermé]
Signaler
Messages postés
185
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
24 juillet 2010
-
Messages postés
185
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
24 juillet 2010
-
Bonjour,

Bonjour je cherche à créer un fichier . txt de ce type


moi:remoi:remoi
moi:remoi:remoi
moi:remoi:remoi


seulement je possede déjà un fichier remoi:remoi
je voudrais créer un script qui automatiserait la copie de moi: à coté de remoi:remoi
dans ce même fichier texte



merci de vos réponses je suis novice

6 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Salut,

lami20j@debian:~/trash$ cat eley
remoi:remoi
n'importe quoi
remoi:remoi
remoi:remoi
n'importe qui
remoi:remoi
au milieu remoi:remoi pour voir
à la fin pour voir remoi:remoi

lami20j@debian:~/trash$ sed -i.orig '/remoi:remoi/ s/\(remoi:remoi\)/moi:\1/' eley
lami20j@debian:~/trash$ cat eley
moi:remoi:remoi
n'importe quoi
moi:remoi:remoi
moi:remoi:remoi
n'importe qui
moi:remoi:remoi
au milieu moi:remoi:remoi pour voir
à la fin pour voir moi:remoi:remoi

lami20j@debian:~/trash$ cat eley.orig
remoi:remoi
n'importe quoi
remoi:remoi
remoi:remoi
n'importe qui
remoi:remoi
au milieu remoi:remoi pour voir
à la fin pour voir remoi:remoi

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
Salut,

Espèce de faux perlien, elle est trop longue ton expression avec "sed" :
sed '/remoi:remoi/ s//moi:&/'
pffffffffffffffffffff ;-DDD
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Salut,

je savais qu'il y a un moyen de faire plus court, mais à cette heure ci, je n'ai pas envie de lire tes romans concernant le sed ;-)
en plus je savais que tu interviendras, donc pourquoi se casser la tête ;-)))

merci
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Re,

avec Perl

lami20j@debian:~/trash$ cat eley
remoi:remoi
n'importe quoi
remoi:remoi
remoi:remoi
n'importe qui
remoi:remoi
au milieu remoi:remoi pour voir
à la fin pour voir remoi:remoi

lami20j@debian:~/trash$ perl -pi.orig -e 's/(?=remoi:remoi)/moi:/' eley
lami20j@debian:~/trash$ cat eley
moi:remoi:remoi
n'importe quoi
moi:remoi:remoi
moi:remoi:remoi
n'importe qui
moi:remoi:remoi
au milieu moi:remoi:remoi pour voir
à la fin pour voir moi:remoi:remoi

lami20j@debian:~/trash$ cat eley.orig
remoi:remoi
n'importe quoi
remoi:remoi
remoi:remoi
n'importe qui
remoi:remoi
au milieu remoi:remoi pour voir
à la fin pour voir remoi:remoi
Messages postés
185
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
24 juillet 2010

merci pour vos réponses mais en faites voilà j'ai un exemple de script sous la main , ce dernier genere à la foi des mot de passe et les imbrique dans un fichier de sortie exemple.txt

============================================================================




#!/usr/bin/perl
#
# gen.pl Password generator by nuTshell
# <carloslack at gmail dot com>
# http://nutshell.gotfault.net
#
# Part of eland(c) by posidron http://posidron.gotfault.net
#
# Gen was originally written to be part of Eland and then i`ve
# decided to publish this "user" version.
#
# Usage eg:
# $ ./gen.pl -all 8 3 join users.txt
# [!] Generating: Ge|{R[12
# [!] Generating: ;?#MMT%A
# [!] Generating: k8bW$RHx
#
# Passwords number: 3
# Passwords length: 8
# Output file pass_all.txt created
# Combo file combo.txt created
# $ cat users.txt
# root
# admin
# you
# $ cat combo.txt
# root:Ge|{R[12
# root:;?#MMT%A
# root:k8bW$RHx
# admin:Ge|{R[12
# admin:;?#MMT%A
# admin:k8bW$RHx
# you:Ge|{R[12
# you:;?#MMT%A
# you:k8bW$RHx
#
use strict;
use Switch;

sub usage() {
printf("Gen by nuTshell <http://nutshell.gotfault.net>\n");
printf("Usage: $0 options parameters\n");
printf("Options are:\n");
printf("-lower [gen lower case passwords only]\n");
printf("-uplowerchar [gen upper case passwords only]\n");
printf("-uplowerint [gen upper case/lower case/integer passwords only]\n");
printf("-uplower [gen upper case/lower case passwords only]\n");
printf("-upper [gen upper case passwords only]\n");
printf("-int [gen integer passwords only]\n");
printf("-lowerint [gen lower case/integer passwords only]\n");
printf("-upint [gen upper case/integer passwords only]\n");
printf("-lowerchar [gen lower case/special caracters passwords only]\n");
printf("-upchar [gen upper case/special caracters passwords only]\n");
printf("-all [FULL! gen all passwords options]\n");
printf("Parameters are:\n");
printf("passowrd length (required integer)\n");
printf("number of passwords (required integer)\n");
printf("join (literal optional)\n");
printf("userfile name (optional)\n");
exit(0)
}

my @lower =
split(",","a,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,x,z,y,w,k");

my @upper =
split(",","A,B,C,D,E,F,G,H,I,J,L,M,N,O,P,Q,R,S,T,U,V,X,Z,Y,W,K");

my @uplower =
split("," ,"b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,x,z,y,w,k,A,B,C," . "D,E,F,G,H,I,J,L,M,N,O,P,Q,R,S,T,U,V,X,Z,Y,W,K");

my @uplowerchar =
split("=", "#=*=,=.=;=:=_=-=+=!=\$=%=&=/=|=?={=}=[=]=(=)=" . "
-a=b=c=d=e=f=g=h=i=j=l=m=n=o=p=q=r=s=t=u=v=x=z=y=" . "w=k=A=B=C=D=E=F=G=H=I=J=L=M=N=O=P=Q=R=S=T=U=V=X=Z=Y=W=K");

my @uplowerint =
split(",","1,2,3,4,5,6,7,8,9,0,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r," . "s,t,u,v,x,z,y,w,k,A,B,C,D,E,F,G,H,I,J,L,M,N,O,P,Q,R,S,T,U,V," . "X,Z,Y,W,K");

my @int = split(",","1,2,3,4,5,6,7,8,9,0");

my @lowerint =
split(",","1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,l,m,n," . "o,p,q,r,s,t,u,v,x,z,y,w,k");

my @upint =
split(",","1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,G,H,I,J,L,M," . "N,O,P,Q,R,S,T,U,V,X,Z,Y,W,K");

my @lowerchar =
split("=","a=b=c=d=e=f=g=h=i=j=l=m=n=o=p=q=r" . "=s=t=u=v=x=z=y=w=k=#=*=,=.=;=:=_=-=+=!=" . "\$=%=&=/=|=?={=}=[=]=(=)=");

my @upchar =
split("=","A=B=C=D=E=F=G=H=I=J=L=M=N=O=P=Q=" . "R=S=T=U=V=X=Z=Y=W=K=#=*=,=.=;=:=_=-=+=!=" . "\$=%=&=/=|=?={=}=[=]=(=)=");

my @all =
split("=","1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=f=" . "g=h=i=j=l=m=n=o=p=q=r=s=t=u=v=x=z=y=w=k=" . "#=*=,=.=;=:=_=-=+=!=\$=%=&=/=|=?={=}=[=]=(=)" . "=A=B=C=D=E=F=G=H=I=J=L=M=N=O=P=Q=R=S=T" . "=U=V=X=Z=Y=W=K=");

my $passoutputfile;
my $var;
my $x;
my $usersfile;
my @array;

my $ARRAY = $ARGV[0] or die &usage;
my $LOOPLENGTH = $ARGV[1] or die &usage;
my $PASSWORDNUMBER = $ARGV[2] or die &usage;

switch($ARRAY) {
case "-all" {@array = @all ; $passoutputfile = "pass_all.txt"}
case "-upchar" {@array = @upchar ; $passoutputfile = "pass_upchar.txt"}
case "-lowerchar" {@array = @lowerchar ; $passoutputfile =
"pass_lowerchar.txt"}
case "-upint" {@array = @upint ; $passoutputfile = "pass_upint.txt"}
case "-lowerint" {@array = @lowerint ; $passoutputfile =
"pass_lowerint.txt"}
case "-int" {@array = @int ; $passoutputfile = "pass_int.txt"}
case "-upper" {@array = @upper ; $passoutputfile = "pass_upper.txt"}
case "-lower" {@array = @lower ; $passoutputfile = "pass_lower.txt"}
case "-uplower" {@array = @uplower ; $passoutputfile = "pass_uplower.txt"}
case "-uplowerchar" {@array = @uplowerchar ; $passoutputfile =
"pass_uplowerchar.txt"}
case "-uplowerint" {@array = @uplowerint ; $passoutputfile =
"pass_uplowerint.txt"}
else {&usage}
}


sub genpass () {

open(PASSFILE, ">$passoutputfile") or die "$!\n";

for($x=0;$x<$PASSWORDNUMBER;$x++) {
foreach(1..$LOOPLENGTH) {
my $array = $array[rand(@array)] ;
$var .= "$array";
}
print("[!] Generating: $var\n");
print(PASSFILE "$var\n");
$var = "";
}
close(PASSFILE);
printf "\nPasswords number: $PASSWORDNUMBER\n";
printf "Passwords length: $LOOPLENGTH\n";
printf "Output file $passoutputfile created\n";
}
&genpass;


sub joinfiles (){
my @loop1 = `/bin/cat $usersfile` or die "$\n";
my @loop2 = `/bin/cat $passoutputfile` or die "$\n";
open(COMBO, ">combo.txt") or die "$!\n";
foreach my $user (@loop1) {
foreach (@loop2) {
chomp($user);
print(COMBO "$user:$_");
}
}
close(COMBO);
printf("Combo file combo.txt created\n");
}

if ($ARGV[3] eq "join") {
if($ARGV[4]) {$usersfile = $ARGV[4]}else{$usersfile = "users.txt"}
&joinfiles
}
#eof

et moi je voudrais qu'il ne me genere pas de mot de passe mais qu'il se contente uniquement de print(COMBO "$user:$_");

Messages postés
185
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
24 juillet 2010

UN grand , très grand merci à lami20j : perl -pi.orig -e 's/(?=)/example:/' combofile.txt
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Salut,

tout ça pour générer un mot de passe ?!
on peut le faire dans une seule ligne de code
http://www.commentcamarche.net/forum/affich 2335882 shell generer une chaine aleatoire#1

par exemple ça

my @lower =
split(",","a,b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,­s,t,u,v,x,z,y,w,k");

my @upper =
split(",","A,B,C,D,E,F,G,H,I,J,L,M,N,O,P,Q,R,­S,T,U,V,X,Z,Y,W,K");

my @uplower =
split("," ,"b,c,d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,x,z,y,w,k,A,B­,C," . "D,E,F,G,H,I,J,L,M,N,O,P,Q,R,S,T,U,V,X,Z,Y,W,K");



on peut l'écrire comme ça
my @lower = 'a' .. 'z';
my @upper = 'A' .. 'Z';
my @uplower = ('a' .. 'z','A' .. 'Z');
c'est plus court et plus efficace ;-)


Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 872
FAINÉANT ! ;-DD
Messages postés
185
Date d'inscription
mardi 23 octobre 2007
Statut
Membre
Dernière intervention
24 juillet 2010

rire