Bonjour a tous, ja i un petit probleme concernant le traitement d un fichier:
Voici un bout du fichier en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 NO_IP;00:08:02:E4:47:0C;19;Fa3/25;SXBswACC-H5-1;SXB-BatH-Etage5;10.45.36.18; 10.45.136.27;00:0E:7F:68:92:BF;28;Fa0/6;SXBswACC-Schutz206-2;SXB-Schutz20-Etage4;10.45.120.23; 10.45.135.270;00:16:35:0D:AE:65;27;Fa3/16;SXBswACC-Schutz205-1;SXB-Schutz20-Etage5;10.45.120.20; 10.45.44.29;00:08:02:E4:47:0C;19;Fa3/25;SXBswACC-H5-1;SXB-BatH-Etage5;10.45.36.18; 10.45.41.149;00:14:C2:57:2A:8E;16;Fa2/17;SXBswACC-H2-1;SXB-BatH-Etage2;10.45.36.10; NO_IP;00:12:79:63:68:DC;13;Fa0/7;SXBswACC-Schilik2-3;SXB-Schilik-Etage2;10.45.148.8;
Le probleme c est que dans ce fichier j ai des lignes que je voudrais supprimer. Sur les deux lignes en gras celle avec NO_IP est mauvaise.
J ai essayé de developpez un petit script mais la boucle avec le compteur qui devrait etre a zero est toujours verifiez et ca n est pas normal.
MON code:
La condition en gras est toujours respectée !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 #!/usr/bin/perl use strict; package sous_fonc_boucle; #Mettre un '.' si le module et pro_prin sont ds le meme rep sinon './rep' sub Fonc_TRAITEMENT_Boucle { my $Flag = 0; my @Tableau_fichier; my @Tableau_fichier_identique; my $Ligne_Fichier_Final; my $Adresse_IP; my $Adresse_MAC; my $Vlan; my $Port; my $Nom_Switch; my $Loc_Switch; my $Adresse_Poste; open(OLD, "/home/rappju/projet_2/fichier_FINAL.csv") or die("Lecture du fichier resultat impossible : $!"); open(NEW, ">/home/rappju/projet_2/final_BASE.csv") or die("Creation du Fichier sans port channel impossible : $!"); while(<OLD>) { push(@Tableau_fichier,$_); } @Tableau_fichier_identique=@Tableau_fichier; foreach(@Tableau_fichier) #On parcourt resultat_info_switch_partie_2.csv { $Ligne_Fichier_Final=$_; if (($Ligne_Fichier_Final) =~ /\W*(.*);(.*);(.*);(.*);(.*);(.*);(.*);/) #On recupere dans l ordre Vlan MAC PORT { $Adresse_IP=$1; $Adresse_MAC=$2; $Vlan=$3; $Port=$4; $Nom_Switch=$5; $Loc_Switch=$6; $Adresse_Poste=$7; print"\n#Adresse_IP[$Adresse_IP]#Adresse_MAC[$Adresse_MAC]#Vlan[$Vlan] #Port [$Port] #Nom_Switch [$Nom_Switch]#Loc_Switch[$Loc_Switch]#Adresse_Poste [$Adresse_Poste]##\n"; #NO_IP 00:50:DA:39:89:4B 13 Fa3/6 SXBswACC-H0-2 SXB-BatH-RdC 10.45.36.5 #10.45.38.43 00:50:DA:39:89:4B 13 Fa3/6 SXBswACC-H0-2 SXB-BatH-RdC 10.45.36.5 my $Compteur_print=0; if($Adresse_IP=~/NO_IP/) { while(<OLD>) #foreach(@Tableau_fichier_identique) { chomp($_); print "\n###ligne du while dans le NO IP $_\n"; if($_=~/\d+\.\d+\.\d+\.\d+;$Adresse_MAC;$Vlan;$Port;$Nom_Switch;$Loc_Switch;$Adresse_Poste;/) { #Cas ou l on a la meme ligne avec NO_IP et Adresse IP #NO_IP 00:50:DA:39:89:4B 13 Fa3/6 SXBswACC-H0-2 SXB-BatH-RdC 10.45.36.5 #10.45.38.43 00:50:DA:39:89:4B 13 Fa3/6 SXBswACC-H0-2 SXB-BatH-RdC 10.45.36.5 print"\n##Compteur_print avant presence d une ligen, identique avec IP[$Compteur_print]\n"; $Compteur_print=$Compteur_print+1; print"\n##Compteur_print avant presence d une ligen, identique avec IP[$Compteur_print]\n"; } print"\n##Compteur_print apres test NO_IP[$Compteur_print]\n"; } if($Compteur_print=="0") { print"\n##Cas ou l on a NO_IP sans adresse IPdan la boucle ==0[$Compteur_print]\n"; print"\n##NO_IP;$Adresse_MAC;$Vlan;$Port;$Nom_Switch;$Loc_Switch;$Adresse_Poste;##\n"; print NEW "NO_IP;$Adresse_MAC;$Vlan;$Port;$Nom_Switch;$Loc_Switch;$Adresse_Poste;\n"; } } elsif(($Adresse_IP)=~/\d+\.\d+\.\d+\.\d+/) { print"\n#CAS ligne unique #$Adresse_IP;$Adresse_MAC;$Vlan;$Port;$Nom_Switch;$Loc_Switch;$Adresse_Poste;##\n"; print NEW "$Adresse_IP;$Adresse_MAC;$Vlan;$Port;$Nom_Switch;$Loc_Switch;$Adresse_Poste;\n"; } elsif($Adresse_IP=~/SELF/) {}#On ne fait rien }#Fin du if pour recuperer les valeurs }#Fin du foreach sur le tableau close(OLD); close(NEW); } 1; &Fonc_TRAITEMENT_Boucle;
Pour une fois personne ne pourras me dire montre moi ton code !!!!
Merci d avance et bon courage
Jules
Partager