Comparaison de tableaux (PERL + MYSQL + CISCO)
Bonsoir,
1 - j'ai deux tableaux (@t1 et @t2) avec des noms et je souhaite supprimer du tableau 2, les mêmes noms présents dans le tableau 1.
2 - Je souhaite représenter topologiquement les objets d'une base de données MYSQL, avec quel langage de programmation devrais-je faire ça ?
Merci
Comparaison de tableaux (perl + MYSQL + CISCO)
Bonjour, désolé, tu as raison.
En fait mon boulot c'était d'insérer des équipements (en tenant compte du site d'affectation, de la zone d'appartenance du routeur CISCO) dans une bases de données MYSQL. Avant l'insertion il fallait s'assurer que les équipements n'étaient pas déjà présents dans la BD.
1 - J'ouvre le fichier .csv contenant les routeurs. Grace au nom du fichier je récupère la zone. Je fait une requête sur la BD en fonction de la zone afin de récupérer le minimum du routers présent en BD. Je compare les deux tableaux et élimine les routeurs présents en BD et insère les autres. Voici le code.
2 - Ce code à mon avis n'est pas optimiser. Je souhaiterais avoir des conseils pour son optimisation.
3 - BP: je n'arrive pas à rappeler le menu une fois le script exécuté.
Merci beaucoup pour les solutions.
4 - Oui, c'est une représentation graphique que je souhaite faire. Les applications disponibles n'éclatent pas les supports de transmissions entre deux routeur. C'est à dire une fibre optique entre deux routeurs possède 63 liaisons 2mbits, chaque 2mbits contient 30 IT et sur chaque IT passe une application. Je souhaite avoir ce niveau d'information.
#!/usr/bin/perl
#!/bin/perl
#!/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI
#!/opt/lampp/lib/perl5/site_perl/5.8.7/i686-linux
#!c:\Perl\bin\perl C:\Perl\site\lib\Net\Telnet
my $PATH = "/home/Admin_Expertt/Script_perl/ors_csv";
use Switch;
use DBI;
#Découpage du nom du fichier afin de récupérer le nom du PCG et le transmettre en variable à la requete.
if ( $NomFicEqt =~/^(.*)_(.*)_([a-zA-Z]+)/)
{
$Nature_objet = $1;
$Type_Objet = $2;
$PCG = $3;
chop($PCG);
}
require "/home/Admin_Expertt/Script_perl/Fonctions/Connect_bd_plate-forme.pl";
require "/home/Admin_Expertt/Script_perl/Fonctions/Prepa_requete_insert_eqt_ORS.pl";
open (EQT_ORS, "<$PATH/$NomFicEqt.csv");
my ( $Nom_equipement, $Num_serie );
while ( defined( $line = <EQT_ORS> ) )
{
( $Nom_equipement, $Num_serie ) = split( /;/, $line );
push @eqt,$Nom_equipement;
}
#Récupération des équipements commençant par le nom du PCG passé en variable dans la requete
for $test_eqt (@Match_eqt_tcm)
{
( $cle_match_eqt, $t_site_FK_match_eqt, $nom_match_eqt ) = split( /;/, $test_eqt );
push @Match_eqt, $nom_match_eqt;
#print "@Match_eqt\n";
}
#Comparaison entre les eqt de la BD et ceux du fichier plat afin d'éliminer ceux présents ds la BD
my %temp;
@temp{@Match_eqt}=0..$#Match_eqt;
print "---------------------------------------------------------------------\n";
print "| Voici un état des lieux avant insertion définitive des équipements |\n";
print "---------------------------------------------------------------------\n";
for my $val(@eqt)
{
if (exists $temp{$val})
{
print "$val est présent dans la BD EXPERTT.\n";
}
else {
print "$val n'est pas dans BD EXPERTT.\n";
push @eqt_pour_insert, $val;
}
}
print "\nVoulez-vous poursuivre l'opération ( oui / non) ? :";
$Reponse = <>;
if ($Reponse =~/non/)
{
print "\nVous aller sortir du mode insertion des eqts\n\n";
sleep(5);
require '/home/Admin_Expertt/Script_perl/Fonctions/Main_menu.pl';
#exit();
}
elsif ($Reponse =~/oui/)
{
print "\n";
print "-------------------------------------------------------------------------\n";
print "| Les équipement suivants seront insérés dans la base de données EXPERTT |\n";
print "-------------------------------------------------------------------------\n";
#Découpage du nom de l'équipement avec l'expression régulière
foreach my $val2(@eqt_pour_insert)
{
$Num_equipement++; $Nom_equipement = $val2; $Nom_eqt_rapport = $Nom_equipement;
if ( $val2 =~ /^([a-zA-Z0-9-.\/]{5})([a-zA-Z]{1,3})(\d)([a-zA-Z]{1,5})?(\d+)?([a-zA-Z0-9-^a-zA-Z0-9]{1,5})?/)
{
$PCG = $1;
$ARCHITECTURE_A = $2;
$Num_archi_A = $3;
$Type_site_A = $4;
$Num_site_ds_bcl_A = $5;
$Nom_site_pa_A = $6;
}
if ( $Type_site_A eq "PCG" )
{
$Nom_site_pa_A = $PCG;
}
#affectation aux équipements leur numéro de site National
foreach $test_site (@Match_sites)
{
( $Num_site, $Num_pcg, $Nom_court_site ) = split( /;/, $test_site );
$Test_site = ( $Nom_court_site cmp $Nom_site_pa_A );
if ( $Nom_site_pa_A eq $Nom_court_site )
{
$T_Sites_Num_site = $Num_site;
print "$Nom_equipement - Num_Nat_Site: $T_Sites_Num_site - Nom_site_PA: $Nom_site_pa_A - PK_EQT: $Num_equipement\n";
Insertion_equipement();
}
}
}
print "\n";
}
"true";
#Fonction pour l'insertion des équipements dans la base de données.
sub Insertion_equipement
{
$dbh->do(
"INSERT INTO t_equipements_tcm (Num_equipement,Num_type_equipement,T_Commande_Materiel_Num_Commande_Materiel,
T_Sites_Num_site,Num_modele_equipement_TCM,Num_etat,Nom_equipement,Nom_eqt_rapport,
Num_serie,Num_constructeur,date_configuration,date_stock,date_essai,date_validation,
date_consignation,date_exploitation,date_livraison,date_reparation,date_hors_exploitation,
adresse_ip,SNMP,TACAS,IPSec,NPM,Fichier_Host,Commentaires,equipe,tel_contrat,fax_contrat,
date_debut_contrat,type_contrat,duree_contrat,num_contrat,nom_societe,selecteur)
VALUES ('$Num_equipement','$Num_type_equipement','','$T_Sites_Num_site','$Num_modele_equipement_TCM',
'$Num_etat','$Nom_equipement','$Nom_eqt_rapport','$Num_serie','$Num_constructeur',
'','','','','','','','','','','$SNMP','$TACAS','$IPSec','$NPM','$Fichier_Host','','','','','','','','','','')" );
$dbh->do(
"INSERT INTO equipement_projet (t_equipements_tcm_Num_equipement,t_projet_Num_projet) VALUES ('$Num_equipement','$Num_projet')" );
}