Bonjour a tous,
Voila je suis pas loin du but mais j'accroche un peu sur un probleme de boucle.
Voila mon code:
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 #!/usr/bin/perl #Utilisation du module POSIX pour recuperer l'heure #car ce module gère les variables d'environnement use POSIX qw(strftime); #strftime est un sous programme du module POSIX qui retourne des listes use strict; #Variables globales utilisées par le programme my $Date; my $Heure; my $Ligne_Fichier; my $Groupe; #Contient le nom des groupes à chaque passage dans la boucle groupe my $Com_Snmp; #Contient le champ correspondant à la communauté snmp my $Nom_Switch; #Contient le nom d'un switch a la fois my $Addr_Ip; #Contient l'adresse IP correspondant au nom du switch sélectionné my $essai; my $cpt=0; $Date = strftime "%a %e %b %Y",localtime; #On place la date $date %a=jour %e=semaine %b=mois %Y annee $Heure = strftime "%H:%M:%S", localtime; #On place l heure dans la variable $heure print ("#################################################################\n"); print ("########### Début du script :",$Date," ",$Heure,"############\n"); # affichage de la date et heure print ("#################################################################\n"); # Vérification et ouverture du fichier base_Lan.txt pour la lecture open(Fichier_Lan,"< base_Lan_perso") || die ("Vérifiez la présence du fichier base_Lan.txt ou son chemin à la ligne :\n $! "); open(Fichier_Resultat,">resultat_info_switch") || die ("Vérifiez la présence du fichier resultat.txt ou son chemin à la ligne :\n $! "); while ($Ligne_Fichier = <Fichier_Lan> ) { next if (($Ligne_Fichier) =~ m/^$/); #Cette ligne permet d'omettre toute les lignes vides !!! On ne considere donc que les lignes utiles { if (($essai)=(($Ligne_Fichier)=~s/\n//g)) #on fait de notre ficher une simple ligne { $cpt++; if ( ($Groupe)=(($Ligne_Fichier) =~/\[(\S+)\]\t+\S/ )) # expression reguliere qui permet de trouver le groupe qui est entre crochets { print "\n Nom du groupe: [$Groupe]"; # affiche le nom du groupe } if ( ($Com_Snmp)= (($Ligne_Fichier) =~/\]\t+(.*)/ )) # expression reguliere qui permet de trouver la communauté snmp du groupe { print ("\t\t\t Nom de la communauté SNMP: [$Com_Snmp] \n"); # } if ( ($Nom_Switch)= (($Ligne_Fichier) =~/(\S+)\t+\d+\.\d+\.\d+\.\d+/)) # expression reguliere qui permet de trouver le nom du switch { print ("\tNom du switch: [$Nom_Switch]"); # } if ( ($Addr_Ip)= (($Ligne_Fichier) =~/\S+\t+(\d+\.\d+\.\d+\.\d+)/)) # expression reguliere qui permet de trouver l'@IP de chaque witch { print ("\t\t\t Adresse IP: [$Addr_Ip]\n"); # print("\n"); } print Fichier_Resultat ( "$Groupe;$Com_Snmp;$Nom_Switch;$Addr_Ip;\n"); } } } close Fichier_Lan; close Fichier_Resultat;
Voila ce que j'obtient:
Groupe_Testaaaa;lanxb1;;;
;;SXBsw;10.45.11.12;
;;SXBsw;10.45.11.13;
Groupe_Serveurs;lanxb2;;;
;;SXB-6;10.45.11.14;
;;SXB-5;10.45.11.15;
;;SXB-4;10.45.11.16;
;;SXB-3;10.45.11.17;
;;SXB-2;10.45.11.18;
;;SXB-1;10.45.11.19;
;;SXB0-1;10.45.11.20;
;;SXB-WF10;10.45.11.21;
;;SXB-WF9;10.45.11.22;
;;SXB-WF8;10.45.11.23;
Voila ce que je voudrai obtenir
Groupe_Testaaaa;lanxb1;;SXBsw;10.45.11.12;
Groupe_Testaaaa;lanxb1;;SXBsw;10.45.11.13;
Groupe_Serveurs;lanxb2;SXB-6;10.45.11.14;
Groupe_Serveurs;lanxb2;SXB-5;10.45.11.15;
Groupe_Serveurs;lanxb2;SXB-4;10.45.11.16;
Groupe_Serveurs;lanxb2;SXB-3;10.45.11.17;
Groupe_Serveurs;lanxb2;SXB-2;10.45.11.18;
Groupe_Serveurs;lanxb2;SXB-1;10.45.11.19;
Groupe_Serveurs;lanxb2;SXB0-1;10.45.11.20;
Groupe_Serveurs;lanxb2;SXB-WF10;10.45.11.21;
Groupe_Serveurs;lanxb2;SXB-WF9;10.45.11.22;
Groupe_Serveurs;lanxb2;SXB-WF8;10.45.11.23;
SVP de l aide je suis sur que je ne suis pas loin du but !!!
merci Jules
Partager