comparer des valeur de 2 tableaux
Envoi de adess le 13 Décembre 2002 17:49:06:
Hello, Je suis novice en programmation perl et je dois réaliser un projet pour la fin de mes études.
En résumer je dois faire un scripte prel pour pouvoir avoir des loge de connexion pour des abonner câble (télé réseau). Je reçois des données via un autre script (logip) qui va cherche ces valeurs sur un équipement X et il me les retournes sous forme d’un tableau. Je dois comparer ces données avant de les insérer dans une base de données avec les mêmes données qui sont déjà dans la BD. Les donnée que je reçois par le script sont : les adresse mac des modems [ENS], l’ip qui est donner au modem, la date de connexion et l’heure.
Voilà le tableau des valeurs retourné par logip :
my $file = 'logip.pl'; #script qui va chercher les données sur un équipement X do $file;
@a = logip();
$j = 0; foreach $val (@a) { $date = "@$val[2]" . "." . "@$val[1]" . "." . "@$val[0]";
$heure = "@$val[3]" . ":" . "@$val[4]";
$ESN = "@$val[5]" . ":" . "@$val[6]" . ":" . "@$val[7]" . ":" . "@$val[8]" . ":" . "@$val[9]" . ":" . "@$val[10]";
$IP = "@$val[11]";
$j++;
print "$date" . " " . "$heure" . " " . "$ESN" . " " . "$IP\n"; }
Ex :
2002.11.13 17:40 01:42:90:10:19:63 212.147.4.41 2002.11.13 17:40 01:42:90:10:27:38 212.147.5.27 2002.11.13 17:40 01:42:90:10:40:56 212.147.7.129 2002.11.13 17:40 01:42:90:10:45:18 212.147.6.247 2002.11.13 17:40 01:42:90:10:71:67 212.147.7.90 2002.11.13 17:40 01:42:90:10:71:96 212.147.5.73 2002.11.13 17:40 01:42:90:10:71:98 212.147.5.96 2002.11.13 17:40 01:42:90:10:72:47 212.147.5.100 2002.11.13 17:40 01:42:90:10:73:11 212.147.6.78 2002.11.13 17:40 01:42:90:10:73:29 212.147.4.158 2002.11.13 17:40 01:42:90:10:73:32 212.147.6.46 2002.11.13 17:40 01:42:90:10:73:55 212.147.7.241 2002.11.13 17:40 01:42:90:10:74:21 212.147.5.80 2002.11.13 17:40 01:42:90:10:74:47 212.147.6.79 2002.11.13 17:40 01:42:90:10:77:39 212.147.4.103 2002.11.13 17:40 01:42:90:10:79:52 212.147.7.168 2002.11.13 17:40 01:43:50:12:81:49 212.147.7.229
Dans un autre tableau j ai le même genre de valeur qui vienne de la base de donnée Ce sont des données qui ont été insérées à la première exécution d’un script qui va chercher les donnée de logip et les met juste dans la BD vierge pour avoir une base.
Le but est de voir ci une adresse mac qui est dans la BD et tjs dans le tableau que logip me retourne, ce script va être exécuter toute les 5 min donc ci une adresse mac qui est dans la BD ne figure plus dans le tableau de logip ça veut dire que le modem n’est plu UP donc il faut insérer une date de déconnexion dans le champ date de déconnexion de la BD
Voilà le tableau des valeurs de la BD :
$dbh = DBI->connect("dbi:mysql:sco", 'root', 'password'); #Connexion ࠍySQL sur la BD SCO
my $sth = $dbh->prepare( "SELECT ESN, IP FROM tbl_logs WHERE DATE_DECONNECTION = '' "); $sth->execute || die "can't execute the query: $query->errstr";
while ( @datadb = $sth->fetchrow_array ) { print "$datadb[0], $datadb[1] \n"; }
Ex :
0f:20:69:98:98:45, 212.147.4.52 0f:20:69:98:98:50, 212.147.5.185 0f:20:69:98:98:82, 212.147.5.42 0f:20:69:98:98:96, 212.147.5.209 0f:20:69:98:99:67, 212.147.4.45 0f:20:69:99:02:21, 212.147.6.48 0f:20:69:99:04:34, 212.147.4.161 0f:20:69:99:16:94, 212.147.120.1 0f:20:69:99:17:93, 212.147.5.43 0f:20:69:99:18:32, 212.147.6.166 0f:20:69:99:19:82, 212.147.5.170
Comment je peux faire pour comparer ces 2 tableaux pour savoir quel adresse mac [ESN] qui ce trouve dans le tableau de la base de données figure tjs dans le tableau qui vient du script logip car ci une adresse mac d’un modem ne figure plus a la prochaine exécution du script logip je dois updater un champs dans ma base de donnée avec une date de déconnexion et recrée une entrée dans la BD avec le champ date de déconnexion a vide.
CI qqun peux me donner un coup de main ou me metre sur la vois merci de me le faire savoir a+
Réponses:
Répondre
|
|