J’aurais une question en PHP, j’avais une application qui permettait de tester l’état du réseau à l’aide d’IP stockées en dur dans ce code :
Code php : 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325 <?php //############################################## FONCTION ECRIRE DANS UN FICHIER ############################################## //FONCTION ECRITURE RTR NOMINAL & SECOURS HS function Ecrire_Coupure_Total($Name) { setlocale(LC_TIME, 'fra_fra'); $date = date("d-m-Y"); $heure = date("H:i:s"); $jour = strftime('%A'); $filename = ("rapports/Rapports_Coupure_Total_".$date.".txt"); if (file_exists($filename)) { $monfichier = fopen($filename, "a+"); } else { $monfichier = fopen($filename, "w"); } fwrite($monfichier, $Name." | ".$jour." ".$date." | ".$heure." | Coupure Total du site \n"); fclose($monfichier); } //FONCTION ECRITURE RTR SUR LE SECOURS function Ecriture_AG_sur_S($Name) { setlocale(LC_TIME, 'fra_fra'); $date = date("d-m-Y"); $heure = date("H:i:s"); $jour = strftime('%A'); $filename = ("rapports/Rapports_AG_sur_S_".$date.".txt"); if (file_exists($filename)) { $monfichier = fopen($filename, "a+"); } else { $monfichier = fopen($filename, "w"); } fwrite($monfichier, $Name." | ".$jour." ".$date." | ".$heure." | Agence sur le RTR de Secours \n"); fclose($monfichier); } //FONCTION ECRITURE RTR DE SECOURS HS MAIS NOMINAL OK function Ecriture_AG_RTR_HS($Name) { setlocale(LC_TIME, 'fra_fra'); $date = date("d-m-Y"); $heure = date("H:i:s"); $jour = strftime('%A'); $filename = ("rapports/Rapports_AG_RTR_HS_".$date.".txt"); if (file_exists($filename)) { $monfichier = fopen($filename, "a+"); } else { $monfichier = fopen($filename, "w"); } fwrite($monfichier, $Name." | ".$jour." ".$date." | ".$heure." | RTR de secours HS, mais sur le Nominal \n"); fclose($monfichier); } //############################################## AFFICHER LE TEMPS DE LATENCE DU PING + AFFICHE LE GRAPH ############################################## function ms($ping) { $timeout = 100; $timeout2 = 200; $rest = substr($ping, -6, 6); $string = @ereg_replace("=", "", $rest); $string = @ereg_replace(" ", "", $string); $string = @ereg_replace("ms", "", $string); if ($string > $timeout2) { return array("sad.gif", $string."ms"); } elseif ($string > $timeout) { return array("indifferent.gif", $string."ms"); } elseif ($string < $timeout) { return array("happy.gif", $string."ms"); } else { return array("happy.gif", $string."ms"); } } //function mstracert($Tracert, $IP) function mstracert($Tracert, $ipN) { $timeout = 100; $timeout2 = 200; $monfichier = file("ping/".$Tracert); $count = count($monfichier); $number = $count-3; $line; foreach ($monfichier as $line_num => $lines) { if ($line_num == $number){ $line = $lines; } } //$string = @ereg_replace(" ".$ipN, "", $line); $string = substr($lines, -8, 10); //echo $string; $string = @ereg_replace("ms", "", $string); $string = @ereg_replace("=", "", $string); $string = @ereg_replace(" ", "", $string); if ($string > $timeout2) { return array("sad.gif", $string."ms"); } elseif ($string > $timeout) { return array("indifferent.gif", $string."ms"); } elseif ($string < $timeout) { return array("happy.gif", $string."ms"); } else { return array("happy.gif", $string."ms"); } } //############################################## PING LE L'EQUIPEMENT A 1 @IP ############################################## function test1ip($ipN, $Name, $Tracert) { $filename = file("ping/".$Tracert); $total = count($filename); for($i = 0; $i < 5; $i++) $string = @ereg_replace("\n", "", $filename); $string = @ereg_replace("\r", "", $string); if ((preg_match("/perte 100%/", $filename[$i])) || (preg_match("/Impossible/", $filename[$i])) || (preg_match("/vie TTL/", $filename[$i]))) { Ecrire_Coupure_Total($Name); return array("down.png", "temp.gif", "0ms"); } else { $temp = mstracert($Tracert); return array("up.png", $temp[0], $temp[1]); } fclose($open); } //############################################## PING LE L'EQUIPEMENT A 2 @IP ############################################## function ping2ip($ipN, $ipS, $Name, $Tracert, $TracertN, $TracertS) { $filename = file("ping/".$TracertN); $total = count($filename); for($i = 0; $i < 9; $i++) $string = @ereg_replace("\n", "", $filename); $string = @ereg_replace("\r", "", $string); if ((preg_match("/perte 100%/", $filename[$i])) || (preg_match("/Impossible/", $filename[$i])) || (preg_match("/vie TTL/", $filename[$i]))) { $filename1 = file("ping/".$TracertS); $total = count($filename1); for($i = 0; $i < 9; $i++) $string = @ereg_replace("\n", "", $filename1); $string = @ereg_replace("\r", "", $string); if ((preg_match("/perte 100%/", $filename1[$i])) || (preg_match("/Impossible/", $filename1[$i])) || (preg_match("/vie TTL/", $filename1[$i]))) { Ecrire_Coupure_Total($Name); return array("down.png", "temp.gif", "0ms"); } else { Ecriture_AG_sur_S($Name); $temp = mstracert($Tracert); return array("secours.png", $temp[0], $temp[1]); } } else { $filename1 = file("ping/".$TracertS); $total = count($filename1); for($i = 0; $i < 9; $i++) $string = @ereg_replace("\n", "", $filename1); $string = @ereg_replace("\r", "", $string); if ((preg_match("/perte 100%/", $filename1[$i])) || (preg_match("/Impossible/", $filename1[$i])) || (preg_match("/vie TTL/", $filename1[$i]))) { Ecriture_AG_RTR_HS($Name); $temp = mstracert($Tracert); return array("sec.png", $temp[0], $temp[1]); } else { $temp = mstracert($Tracert); return array("up.png", $temp[0], $temp[1]); } } } //################################################### FSOCKOPEN PORT 23 DE 1 @IP ########################################### function fsockopen1ip($ipN, $Name, $Tracert) { $pingV = fsockopen($ipN, 23, $errno, $errstr, 5); if ($pingV == false) { Ecrire_Coupure_Total($Name); return array("down.png", "temp.gif", "0ms"); } else { //$temp = ms($pingN); $temp = mstracert($Tracert, $ipN); return array("up.png", $temp[0], $temp[1]); } } //################################################### FSOCKOPEN PORT 23 DE 2 @IP ########################################### function fsockopen2ip($ipN, $ipS, $Name, $Tracert) { $pingV = fsockopen($ipN, 23, $errno, $errstr, 5); if ($pingV == false) { $pingV = fsockopen($ipS, 23, $errno, $errstr, 5); if ($pingV == false) { Ecrire_Coupure_Total($Name); return array("down.png", "temp.gif", "0ms"); } else { //$temp = ms($pingS); Ecriture_AG_sur_S($Name); $temp = mstracert($Tracert, $ipS); return array("secours.png", $temp[0], $temp[1]); } } else { $pingV = fsockopen($ipS, 23, $errno, $errstr, 3); if ($pingV == false) { Ecriture_AG_RTR_HS($Name); $temp = mstracert($Tracert, $ipN); return array("sec.png", $temp[0], $temp[1]); } else { //$temp = ms($pingN); $temp = mstracert($Tracert, $ipN); return array("up.png", $temp[0], $temp[1]); } } } ################################################################## FUNCTION PING VISIO ################################################################ $VisioSE = fsockopenoip("cdi.o68.o.yes","Visio Conf SE","ping_visiose.txt"); $VisioPL = fsockopenoip("cdi.o68.3i.yes","Visio Conf PL","ping_visiopl.txt"); $VisioGL = fsockopenoip("cdi.o68.47.yes","Visio Conf GL","ping_visiogl.txt"); $VisioBX = fsockopenoip("cdi.o68.33.yes","Visio Conf BX","ping_visiobx.txt"); $PCWIN = testoip("abi.o6.i36.ibc","PCWIN ROMAVi4i","ping_pcwin.txt"); $BELGIQUE = testoip("xy.ooo.0.i45","CERP Belgique","ping_belgique.txt"); $EURODEP = fsockopenoip("abi.30.i40.qui","Eurodep","ping_eurodep.txt"); $MARINA = testoip("abi.30.iba.yes","Air Marina","ping_marina.txt"); #$PRE_LIGNE = fsockopenoip("abi.ba.i08.yes","Premiere Ligne","ping_ligne.txt"); $PRE_LIGNE = pingiip("abi.ba.i08.qui","abi.ba.i08.tot","Premiere Ligne","ping_ligne.txt","ping_ligne_n.txt","ping_ligne_s.txt"); $RCIM = fsockopenoip("abi.30.sur.yes","RCIM","ping_rcim.txt"); $INT_OBS = testoip("ioi.i34.ab6.i06","Internet OBS","ping_int_obs.txt"); $INT_SFR = fsockopenoip("cd5.7.oo4.33","Internet SFR","ping_int_alt.txt"); $DC_WEB = fsockopenoip("abi.30.i48.yes","Datacenter WEB","ping_dc_web.txt"); $Vitalea_AN = fsockopenoip("abi.30.do6.yes","Vitalea Angers","ping_vitaleaan.txt"); $Vitalea_BG = fsockopenoip("abi.30.i30.yes","Vitalea Bourges","ping_vitaleabg.txt"); $Oxypharm_BR = pingiip("xy.tor.o.qui","xy.tor.o.tot","Oxypharm Brest","ping_vitaleabr.txt","ping_vitaleabr_n.txt","ping_vitaleabr_s.txt"); $Vitalea_SM = fsockopenoip("abi.30.pur.yes","Vitalea Saint-Michel","ping_vitaleasm.txt"); $Vitalea_NI = fsockopenoip("abi.30.cor.yes","Vitalea Niort","ping_vitaleani.txt"); #$Vitalea_PT = fsockopenoip("abi.30.not.yes","Vitalea Parthenay","ping_vitaleapt.txt"); $Vitalea_LP = fsockopenoip("abi.30.do5.yes","Vitalea Limoges","ping_vitalealp.txt"); $Vitalea_PG = fsockopenoip("abi.30.doi.yes","Vitalea Perigueux","ping_vitaleapg.txt"); $Vitalea_RN = pingiip("abi.30.do9.qui","abi.30.do9.tot","Vitalea Redon","ping_vitalearn.txt","ping_vitalearn_n.txt","ping_vitalearn_s.txt"); $Vitalea_MS = testoip("abi.30.do7.yes","Vitalea Medistock","ping_vitaleams.txt"); #################################################################### FUNCTION PING AGENCE #################################################################### $AgenceSE = fsockopeniip("abi.ab.o.qui","abi.ab.o.tot","Saint-Etienne","ping_se.txt"); $AgenceCF = fsockopeniip("abi.ab.i.qui","abi.ab.i.tot","Conflans","ping_cf.txt"); $AgenceLA = fsockopeniip("abi.ab.3.qui","abi.ab.3.tot","Laigneville","ping_la.txt"); $AgenceHA = fsockopeniip("abi.ab.4.qui","abi.ab.4.tot","Le Havre","ping_ha.txt"); $AgenceJT = fsockopeniip("abi.ab.5.qui","abi.ab.5.tot","Joue-les-Tours","ping_jt.txt"); $AgenceSQ = fsockopeniip("abi.ab.6.qui","abi.ab.6.tot","Saint-Quentin","ping_sq.txt"); $AgenceMA = fsockopeniip("abi.ab.8.qui","abi.ab.8.tot","Maubeuge","ping_ma.txt"); $AgenceHE = fsockopeniip("abi.ab.9.qui","abi.ab.9.tot","Herouville","ping_he.txt"); $AgenceSL = fsockopeniip("abi.ab.xy.qui","abi.ab.xy.tot","Saint-Lô","ping_sl.txt"); $AgenceBO = fsockopeniip("abi.ab.oo.qui","abi.ab.oo.tot","Boulogne","ping_bo.txt"); $AgencePM = fsockopeniip("abi.ab.oi.qui","abi.ab.oi.tot","Pont-a-Mousson","ping_pm.txt"); $AgenceAB = fsockopeniip("abi.ab.o3.qui","abi.ab.o3.tot","Abbeville","ping_ab.txt"); $AgenceTO = fsockopeniip("abi.ab.o4.qui","abi.ab.o4.tot","Toulouse","ping_to.txt"); $AgencePE = fsockopeniip("abi.ab.o6.qui","abi.ab.o6.tot","Perpignan","ping_pe.txt"); $AgenceCC = fsockopeniip("abi.ab.ab.qui","abi.ab.ab.tot","Chalon-en-Champagne","ping_cc.txt"); $AgenceLN = fsockopeniip("abi.bc.io.qui","abi.bc.io.tot","Lievin","ping_ln.txt"); $AgenceBN = fsockopeniip("abi.bc.do.qui","abi.bc.do.tot","Biron","ping_bn.txt"); $AgenceVE = fsockopeniip("abi.bc.i3.qui","abi.bc.i3.tot","Verneuil","ping_ve.txt"); $AgenceMC = fsockopeniip("abi.bc.ut.qui","abi.bc.ut.tot","Macon","ping_mc.txt"); $AgenceCH = fsockopeniip("abi.bc.i7.qui","abi.bc.i7.tot","Cholet","ping_ch.txt"); $AgenceVN = fsockopeniip("abi.bc.i9.qui","abi.bc.i9.tot","Vannes","ping_vn.txt"); $AgenceLO = fsockopeniip("abi.bc.30.qui","abi.bc.30.tot","Lorient","ping_lo.txt"); $AgenceQU = fsockopeniip("abi.bc.ba.qui","abi.bc.ba.tot","Quimper","ping_qu.txt"); $AgencePL = fsockopeniip("abi.bc.3i.qui","abi.bc.3i.tot","Paris Sud","ping_pl.txt"); $AgenceBX = fsockopeniip("abi.bc.33.qui","abi.bc.33.tot","Bordeaux","ping_bx.txt"); $AgenceAG = fsockopeniip("abi.bc.34.qui","abi.bc.34.tot","Agen","ping_ag.txt"); $AgenceRD = fsockopeniip("abi.bc.35.qui","abi.bc.35.tot","Rodez","ping_rd.txt"); $AgenceNA = fsockopeniip("xy.44.ba.qui","xy.44.ba.tot","Nantes","ping_na.txt"); $AgenceGL = fsockopeniip("abi.ab.47.qui","abi.ab.47.tot","Grand-Lille","ping_gl.txt"); $AgenceML = fsockopeniip("abi.bc.48.ut3","abi.bc.48.tot","Mareuil","ping_ml.txt"); $AgenceLM = fsockopeniip("abi.bc.5i.ut3","abi.bc.5i.tot","Limoges","ping_lm.txt"); $AgenceLS = fsockopeniip("xy.55.ba.qui","xy.55.ba.tot","Lyon Sud","ping_ls.txt"); $ISI_LEO = pingiip("abi.bc.xyo.ut4","abi.bc.xyo.tot","Isipharm LEO","ping_isi_leo.txt","ping_isi_leo_n.txt","ping_isi_leo_s.txt"); $ISI_MSA = pingiip("abi.ba.i3i.yes","abi.ba.i3i.tot","Isipharm MSA","ping_isi_msa.txt","ping_isi_msa_n.txt","ping_isi_msa_s.txt"); $CENTRALE = pingiip("abi.ba.io6.qui","abi.ba.io6.tot","Centrale des Pharmaciens","ping_cdp.txt","ping_cdp_n.txt","ping_cdp_s.txt"); $DC_SFR = pingiip("abi.io.i30.37","abi.io.i30.38","Datacenter SFR","ping_dc_alt.txt","ping_dc_alt_n.txt","ping_dc_alt_s.txt"); $DC_OBS = pingiip("abi.io.i30.io","abi.io.i30.do","Datacenter OBS","ping_dc_obs.txt","ping_dc_obs_n.txt","ping_dc_obs_s.txt"); $SI_DC_SFR = pingiip("abi.i0.i33.yes","abi.i0.i33.ut4","Datacenter SI SFR","ping_si_dc_alt.txt","ping_si_dc_alt_n.txt","ping_si_dc_alt_s.txt"); $SI_DC_OBS = pingiip("abi.i0.i36.ut4","abi.i0.i36.qui","Datacenter SI OBS","ping_si_dc_obs.txt","ping_si_dc_obs_n.txt","ping_si_dc_obs_s.txt"); ?>
Le Ping sert à tester les routeurs nominal et de secours et le trace route sert à tester l’adresse HSRP en regardant le nombre de sauts (si un saut en plus alors on est sur le routeur de secours) et obtenir le temps de latence du Ping.
Seulement je voudrais la transformer de manière à ce qu’elle se fasse en temps réel (asynchrone avec Ajax, ainsi on affiche les résultats sur une carte (à l’aide de points de couleurs .png : vert tout est fonctionnel, orange on est sur le routeur nominal mais le routeur de secours est HS, rouge on est sur le routeur de secours mais le routeur nominal est HS et noir rien ne fonctionne !) dès qu’on les a et on n’attend pas que tous les tests soient finis) et de manière à ce qu’elle utilise les IP que j’ai remis dans une base de données (côté pratique si on veut modifier la liste pas besoin de faire du code dans l’application).
Quelqu’un pourrait me montrer comment je pourrais mettre à jour mon code ?
J’ai déjà réussi à récupérer mes IP dans ma base sous forme de liste à l’aide de ces codes :
recupiptracer.php :
Code php : 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 <!--Dans ce fichier on fait une requête où on récupère les informations de chaque IP et on echo le tout sur la page index (carte).--> <!--SELECT HSRP_Adr_Ip FROM ENTITE;--> <?php session_start(); require "admin/dbconfig.php"; $req = $db_con->query('SELECT HSRP_Adr_Ip FROM ENTITE'); while ($donnees = $req->fetch()) { echo $donnees['HSRP_Adr_Ip'].'<br />'; } $req->closeCursor(); ?>
recupipping.php :
Code php : 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 <!--Dans ce fichier on fait une requête où on récupère les informations de chaque IP et on echo le tout sur la page index (carte).--> <!--SELECT Nom_Adr_Ip, Sec_Adr_Ip FROM ENTITE WHERE Nom_Adr_Ip IS NOT NULL AND Sec_Adr_Ip IS NOT NULL;--> <?php session_start(); require "admin/dbconfig.php"; $reponse = $db_con->query('SELECT Nom_Adr_Ip FROM ENTITE WHERE Nom_Adr_Ip IS NOT NULL'); while ($donnees = $reponse->fetch()) { echo $donnees['Nom_Adr_Ip'] . '<br />'; } $reponse->closeCursor(); $reponse = $db_con->query('SELECT Sec_Adr_Ip FROM ENTITE WHERE Sec_Adr_Ip IS NOT NULL'); while ($donnees = $reponse->fetch()) { echo $donnees['Sec_Adr_Ip'] . '<br />'; } $reponse->closeCursor(); ?>
Voici le code qui permet la connexion à ma base (dbconfig.php):
Code php : 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 <?php //$db_host = "localhost"; $db_host = "ABCDEFGH"; $db_name = "azertyuiop"; $db_user = "xx_xx_xx"; $db_pass = "0123456789"; try{ $db_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ echo $e->getMessage(); } ?>
Voilà le code de ma carte qui affiche les résultats (index.php):
Code php : 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 <?php //$db_host = "localhost"; $db_host = "ABCDEFGH"; $db_name = "azertyuiop"; $db_user = "xx_xx_xx"; $db_pass = "0123456789"; try{ $db_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ echo $e->getMessage(); } ?>
Je pense renvoyer le résultat du Ping directement sur mon index.php à l'aide d'Ajax et le résultat du trace route dans un fichier texte qui est ensuite lu puis effacé. Le but étant de ne pas avoir un temps de rechargement des données de la carte trop long pour avoir des informations en temps réel... !
Je vous remercie par avance pour votre aide !![]()
Partager