Programme Perl [Résolu/Fermé]

Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 087
Salut,

c'est quoi l'erreur ?

Personne ne voit ton écran depuis là ! ;-)
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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);


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
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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
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 ^^
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
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 $!
Ok merci probleme résolu alors :)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
De rien ;-)
et je mets résolu ;-)

Bonne continuation.