jaywax | Merci pour vos réponses !
Aprés avoir repris ton code T509 comme suit :
Code :
- <?php
- //récupération des informations d'une balise Argos par connexion directe au centre de calcul CLS
- //variables du script
- $serveur = "hostname_switch"; //serveur de connexion netdis.cls.fr
- //$login = "EVERYONE"; //login au serveur
- $password = "mdp"; //password
- $commande = "sh port status"; //commande à effectuer
- function telnet($serveur, $mdp, $commande) {
-
- $close = "LOGOUT";
-
- // entetes TELNET
- $header1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).
- chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).
- chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).
- chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).
- chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).
- chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).
- chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).
- chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).
- chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).
- chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).
- chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).
- chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
-
- $header2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).
- chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);
-
- // connexion
- $fp=pfsockopen($serveur,23);
-
- // envoi de l'entete telnet
- fputs($fp,$header1);
- sleep(1);
- fputs($fp,$header2);
- sleep(1);
-
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
-
- /* login
- fputs($fp,$login."\r" );
- sleep(1);
-
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
-
- //password*/
- fputs($fp,$mdp."\r" );
- sleep(1);
-
- //recupération de la réponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
-
- // envoi de la commande
- fputs($fp,$commande."\r" );
- sleep(1);
-
- //lecture de la reponse
- $output.=fread($fp,128);
- $stat=socket_get_status($fp);
- $output.=fread($fp, $stat["unread_bytes"]);
-
- //logout
- fputs($fp,$close."\r" );
- fclose($fp);
-
- $result = strpos($output, $commande);
-
- if ($result) {
- return $output;
- }
- else {
- echo $output;
- return FALSE;
- }
- }
- // Fin de la fonction de connexion TELNET
- ///////////////////////////////////////////////////////
- //appel des resultats par TELNET
- $reponse = telnet($serveur, $password, $commande);
- echo $reponse;
- //Test sans connexion
- //$reponse = "ARGOS READY /COM/C,10,,ALL PROG \t \r 10 10000 43.543N 10.398W \t\n\t 3 \n\r\t 286/1322Z-286/0926 ( 3) 0.99811E+3 32 0.20000E+2 0.32000E+2 ";
- /*si la réponse n'est pas complete, on recommence (jusque 2 essais)
-
- if (!$reponse) {
- sleep(3);
- $reponse = telnet($serveur, $password, $commande);
- }
- if (!$reponse) {
- sleep(3);
- $reponse = telnet($serveur, $password, $commande);
- }
-
-
- if ($reponse) {
- //traitement de la chaine retour
- if (strpos($reponse, "/".$commande)) {
-
- //extraction des données
- ereg("[0-9]{1,3}\.[0-9]{3}(N|S)", $reponse, $lat); //recup latitude
- ereg("[0-9]{1,3}\.[0-9]{3}(W|E)", $reponse, $long); //recup longitude
- ereg($long[0]."[ \t\n\r]+([0-9A-Z]{1})", $reponse, $classe); //recup classe de résultat
- ereg("([0-9]{1,3})/([0-9]{4})Z-([0-9]{1,3})/([0-9]{4})", $reponse, $date); //recup date et heure de dernière localisation
-
- //traitement de la date
- $aujourdhui = strftime("%j" ); //numéro d'aujourd'hui dans le calendrier
- //si le numero du jour de > à celui d'aujourd'hui, nous travaillons avec l'annee derniere
- $annee = ($aujourdhui < $date[3]) ? intval(strftime("%Y" )) - 1 : intval(strftime("%Y" ));
- $minute = substr($date[4], 2, 2);
- $heure = substr($date[4], 0, 2);
-
- $derniere_localisation = date("d/m/Y", mktime (0,0,0,1,$date[3],$annee))." $heure:$minute";
-
-
- //enregistrement dans un fichier des donnees LAT et LONG
- $fichier = "gps.html";
- $fp = fopen($fichier, "wb" );
- fputs($fp, "LAT : $lat[0] <br />LONG : $long[0]" );
- fclose($fp);
-
-
- echo "La dernière localisation de la balise : $derniere_localisation GMT <br />LAT : $lat[0] <br />LONG : $long[0] <br />Classe de résultat : $classe[1]";
-
- }
- else {
- echo "Erreur de récupération des données";
- }
- }
- else {
- echo "Erreur de connexion avec le serveur Argos";
- }
- */
- ?>
|
Je l'ai juste un peu adapté car la connexion telnet ne necessite pas de login sur mes switchs.
La réponse du script (sur les deux modèles) :
Code :
- Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp\www\test.php on line 60
|
|