Script

Résolu/Fermé
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010 - 19 juil. 2008 à 06:54
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010 - 19 juil. 2008 à 20:51
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

A voir également:

6 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
19 juil. 2008 à 08:17
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

0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 juil. 2008 à 08:48
Salut,

Espèce de faux perlien, elle est trop longue ton expression avec "sed" :
sed '/remoi:remoi/ s//moi:&/'
pffffffffffffffffffff ;-DDD
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
19 juil. 2008 à 08:53
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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
19 juil. 2008 à 08:19
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
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
19 juil. 2008 à 18:30
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:$_");

0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
19 juil. 2008 à 19:26
UN grand , très grand merci à lami20j : perl -pi.orig -e 's/(?=)/example:/' combofile.txt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
19 juil. 2008 à 20:09
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 ;-)


0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
19 juil. 2008 à 20:10
FAINÉANT ! ;-DD
0
Eley Messages postés 185 Date d'inscription mardi 23 octobre 2007 Statut Membre Dernière intervention 24 juillet 2010
19 juil. 2008 à 20:51
rire
0