Programme Perl

Résolu/Fermé
Gilgamesh - 4 janv. 2008 à 15:49
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 4 janv. 2008 à 19:41
Bonjour,
Je dois faire un programme en Perl sur Linux tres simple qui prend les 20 dernieres lignes de deux fichier et les concatenent dans un nouveau.
Voici ce que j'ai fait mais il me sort une erreur, j'ai tout les pré requis pour lancer le programme Perl, je pense que c'est une erreur de rien du tout mas vu que je ne suis pas un pro en Perl je fait appel à vous.

#!/root/ -w

open (snort,"/var/log/snort/alert")
@snort=<snort>; //absorbe le fichier dans un tableau @snort
close(snort);

open(iptables,"/var/log/firewall")
@iptables=<iptables>; //meme chose pour le deuxieme fichier.
close(iptables);

open(log,">/root/log")

printf(log "Fichier Log de Snort :\n\n");
my $i=$#snort;
while($i>=$#snort-20)
{
printf(log "%d",$snort[$i]); //copie les 20 dernieres lignes du premier fichier
$i=$i-1;
}

$i=$#iptables;

printf(log "Fichier Log de iptables :\n\n");
while($i>=$#iptables-20)
{
printf(log "%d",$iptables[$i]); //copie les 20 dernieres lignes du deuxieme fichier
$i=$i-1;
}
close(log);
exit 1;

10 réponses

blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
4 janv. 2008 à 15:53
Salut,

c'est quoi l'erreur ?

Personne ne voit ton écran depuis là ! ;-)
0
désolé ^^'
voila l'erreur :

prog.pl: line 3: syntax error near unexpected token `snort,"/var/log/snort/alert"'
prog.pl: line 3: `open (snort,"/var/log/snort/alert")'

Et 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 567
4 janv. 2008 à 16:16
Salut,

#!/root/ -w 

open (snort,"/var/log/snort/alert") 
@snort=<snort>; //absorbe le fichier dans un tableau @snort 
close(snort); 

open(iptables,"/var/log/firewall") 
@iptables=<iptables>; //meme chose pour le deuxieme fichier. 
close(iptables); 

open(log,">/root/log") 

print log splice(@snort,-20), splice(@siptables,-20);

mais attention, splice supprime les éléments de tableau
si c'est la seule chose qui t'interesse alors tu peux utiliser cette méthode, sinon fait signe et je te donerai une autre

Conseil :

mets le nom de handle de fichier toujours en majuscules

c'est-à-dire
#!/root/ -w 

open (SNORT,"r/log/snort/alert") 
@snort=<snort>; //absorbe le fichier dans un tableau @snort 
close(snort); 

open(IPTABLES,"/var/log/firewall") 
@iptables=<iptables>; //meme chose pour le deuxieme fichier. 
close(iptables); 

open(LOG,">/root/log") 

print LOG splice(@snort,-20), splice(@iptables,-20);


0
oh merci le contenu des tableaux ne m'interesse pas, je vais essayer ça tout de suite je vous dirais si ça marche.
Encore merci
0

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

Posez votre question
Hmm ca marche toujour pas :'(
meme erreur :

Bahamut:~ # sh prog2.pl
prog2.pl: line 3: syntax error near unexpected token `SNORT,"/var/log/snort/alert"'
prog2.pl: line 3: `open (SNORT,"/var/log/snort/alert")'

Pour lancer le programme j'ai fait "sh prog2.pl" avec les droits d'executions c'est bien comme ça qu'on l'execute no?
Help plz
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 567
4 janv. 2008 à 17:21
Ce n'est pas un script shell donc pas la peine de faire sh
Mets au début de script
#!/usr/bin/perl
et tu dois l'exécuter avec
perl prog2.pl


Essaie celui-là

#!/usr/bin/perl 
use strict;use warnings;

open SNORT,"r/log/snort/alert"
    or die "E/S : $!\n";

my @snort=<SNORT>; //absorbe le fichier dans un tableau @snort 
close(SNORT); 

open IPTABLES,"/var/log/firewall"
     or die "E/S : $!\n"; 
my @iptables=<IPTABLES>; //meme chose pour le deuxieme fichier. 
close(IPTABLES); 

open LOG,">/root/log"
     or die "E/S : $!\n";

print LOG splice(@snort,-20), splice(@iptables,-20); 
close(LOG);
__END__
--
lami20j
0
ouiiiiiiiiiiiii ca marche merci beaucoups lami20j, c'est pas pour t'enbeter mais tu pourrais me dire pourquoi les lignes :
use strict;use warnings;
or die "E/S : $!\n";

Tu m'a l'air de bien t'y connaitre alors je vais te dire un truc que tu ne sais probablement pas : Tu vient de me sauver la vie !
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 567
4 janv. 2008 à 19:28
Salut,

regarde ici
perlstyle - Comment (bien) écrire du Perl
Utiliser strict (use strict)
use warnings

open IPTABLES,"/var/log/firewall"
or die "E/S : $!\n";


ici on ouvre un handle de fichier qu'on l'appele IPTABLES, qui permet d'ouvrir en lecture le fichier /var/log/firewall

si jamais le script est exécuter par un utilisateur ou un processus qui n'a pas les privilèges nécessaires
or die "E/S : $!\n" permet de signaler l'erreur survenue et le programme est arrêté
variable $!
0
Ok merci probleme résolu alors :)
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 567
4 janv. 2008 à 19:41
De rien ;-)
et je mets résolu ;-)

Bonne continuation.
0