Looking Glass

Adresse IP :

1 - Fonctions disponibles
        1.1 - Ping
        1.2 - Traceroute
        1.3 - Show proc cpu hist
        1.4 - Show mem stat hist
2 - Prise de main Cisco
3 - A propos de
4 - Suivi du développement
        4.1 - Problème restant
        4.2 - RoadMap
        4.3 - Suivi du projet
5 - Code source

1 - Fonctions disponibles

1.1 - Ping

Cette fonction vous permet de tester la présence de l'adresse IP ou de l'hôte que vous avez sélectionné. Pour cela, un paquet de type Icmp sera envoyé et la réponse vous indiquera le temps d'allez retour. Ceci est identique à l'utilisation de l'utilitaire Ping de votre station de travail. Le seul avantage est que vous pouvez l'émettre à partir du routeur Cisco FrameIP situé sur un autre adressage Internet que vous.

1.2 - Traceroute

Traceroute, comme la fonction Ping permet de tester la présence de l'adresse IP ou de l'hôte que vous avez sélectionné. Il indiquera en plus, par quel routeur il passe pour jour joindre la destination. Pour cela, il envoi un paquet de type Icmp avec un Ttl de 1 en attendant le message de retour du premier routeur. Puis il recommence avec un Ttl positionné à 2 et ainsi de suite jusqu'à la réponse de la destination finale. Cette fonction vous indiquera alors le temps de réponse, allez retour, pour chaque saut effectué.

1.3 - Show proc cpu hist

Cette fonction, présente uniquement pour le fun, vous indiquera l'état du processeur du routeur qui effectue les fonctions précédentes.

1.4 - Show mem stat hist

Cette fonction, présente uniquement pour le fun, vous indiquera l'état de la mémoire du routeur qui effectue les fonctions précédentes.

2 - Prise de main Cisco

Le principe est basé sur la prise distante de notre routeur Cisco via un script Php. Pour cela, le script effectue un telnet routeur.frameip.com 23. Puis indique le password et entre la commande désiré.

TCPIP IPV6 VOIP VPN IP IPV4

1 - Exécution du script php - Vous surfez sur une page web du site www.FrameIP.com et vous actionnez un formulaire Html qui enclenche l'exécution sur le serveur d'un script Php.
2 - Demande d'exécution - Le précèdent script Php ouvre, via la commande fsockopen, une session Telnet sur notre routeur ISP situé à un autre endroit d'Internet. Puis passe les différentes commandes correspondantes à votre sélection dans le précédent formulaire Html.
3 - Ping à destination de vous ou autre - Le routeur Cisco exécute votre commande comme le Ping, le Traceroute et etc.

3 - A propos de

 Version

 Version 1.2

 Date de création

 15 Mars 2004

 Dernière modification

 21 Mars 2004

 Auteur

 _SebF

Posez vos questions, remarques, demande d'évolution et retour d'expérience sur le Forum dédié aux outils

4 - Suivi du développement

4.1 - Problème restant

- La commande flush() ne permet pas d'avoir un affichage temps réel.

4.2 - RoadMap

- Proposer le choix du nombre de Ping à effectuer.
- Proposer le temps du Timeout.

4.3 - Suivi du projet

2004.03.21

1.2

 - Protection contre l'utilisation des adresses privées grâce à la fonction est_ce_une_ip_privee().
 - Affectation du timeout à deux secondes sur l'ouverture de la session TCP. Via la fonction fsockopen($routeur_ip,23,&$errno,&$errstr,2);
 - Indication au routeur d'envoyer toute les données sans --- more --- via la commande "terminal length 0".
 - Ajout de la commande sh proc cpu hist.
 - Ajout de la commande sh mem stat hist.

2004.03.20

1.1

 - Création de la fonction réception.
 - Création du formulaire html correspondant.

2004.03.19

1.1

 - Solution pour la réception, je passe la socket en mode non bloquant et je lance la réception permanente jusqu'à la réception du prompt indiquant la fin de l'exécution de la commande.

2004.03.15

1.0

 - Initiation du projet
 - Ouverture de la connexion sur le routeur Cisco via fsockopen().
 - Passage du password via fputs().
 - Problème de réception avec : while (!feof($fp)) echo fgets($fp, 128); Cela fonctionne bien sauf avec le routeur Cisco oùu le eof n'est pas detecté.

5 - Code source

<?php

// ********************************************
// Nom du script : lookingglass.php
// Auteur : _SebF@frameIP.com.pas.de.spam
// Date de création : 15 mars 2004
// Version : 1.2
// Licence : Ce script est libre de toute utilisation.
//           La seule condition existante est de faire référence au site www.frameip.com afin de respecter le travail d'autrui.
// ********************************************
 
// ********************************************
// Affichage de l'entête html
// ********************************************
echo
      '
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
      <html>
 
      <head>
 
      <LINK REL="StyleSheet" HREF="../style.css" TYPE="text/css">
 
      <title>FrameIP, Pour ceux qui aiment IP - Script Lookingglass</title>
 
      <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <META NAME="AUTHOR" CONTENT="www.frameip.com">
      <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2003 by framip">
      <META NAME="KEYWORDS" CONTENT="lookingglass, ping, tracert, traceroute, icmp, cisco, bgp, route, show, enable, en, routeur, temps de reponse, test, proc, cpu, mem, hist, conf t, terminal, length">
      <META NAME="DESCRIPTION" CONTENT="Frameip, pour ceux qui aiment IP - Script Lookingglass">
      <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
      <META NAME="REVISIT-AFTER" CONTENT="1 DAYS">
      <META NAME="RATING" CONTENT="GENERAL">
      <META NAME="GENERATOR" CONTENT="powered by frameip.com - webmaster@frameip.com">
     
      </head>
 
      <body>
      ';
 
// *****************************
// Récupération des champs
// *****************************
$ping_ip_demande=$_POST['ipaddress'];
$choix_de_la_commande=$_POST['valeur_bouton'];
 
// *****************************
// Création de la commande à partir du bouton selectionné
// *****************************
if ($choix_de_la_commande=="bouton_ping")
      $commande_cisco="ping ".$ping_ip_demande."\n";
else if ($choix_de_la_commande=="bouton_traceroute")
      $commande_cisco="traceroute ".$ping_ip_demande."\n";
else if ($choix_de_la_commande=="bouton_cpu")
      $commande_cisco="sh proc cpu hist\n";
else if ($choix_de_la_commande=="bouton_mem")
      $commande_cisco="sh mem stat hist\n";
else
      $commande_cisco="\n";
 
// **********************************************
// Enregistrement du compteur
// **********************************************
include '../variables.php';
$info_compteur1=$ping_ip_demande;
$info_compteur2=$choix_de_la_commande;
$info_compteur3=str_replace("\n","",$commande_cisco); // Suppression du /n pour ne pas perturber le fichier compteur
$specifiez_le_nom_du_compteur="lookingglass.php";
include '../compteur.php';
 
// *****************************
// Initiation des variables
// *****************************
$routeur_ip="routeur.frameip.com";
$prompt_cisco="Routeur__SebF>";
 
// *****************************
// Interdie la saisie d'une ip privée
// *****************************
if (est_ce_une_ip_privee($ping_ip_demande)==true)
      lookingglass_erreur(1);
 
// *****************************
// Ouverture de la session TCP
// *****************************
$id_de_la_socket=@fsockopen($routeur_ip,23,&$errno,&$errstr,2);
 
// *****************************
// Valide si l'ouverture de session TCP a eu lieu
// *****************************
if($id_de_la_socket)
      {
      // ********************************************
      // Présentation des résultats
      // ********************************************
      echo '
            <p align="center">
                  <font size="4" color="#008000">
                        <b>
                             Lookingglass
                        </b>
                  </font>
            </p>
            ';
 
      // *****************************
      // Configuration du timeout maximum à 17 pour être à -1 de celui de l'hébergeur
      // *****************************
      @socket_set_timeout($id_de_la_socket,17);
 
      // *****************************
      // Passage de la socket en mode non bloquant
      // *****************************
      @stream_set_blocking($id_de_la_socket,false);
 
      // *****************************
      // Reception
      // *****************************
      reception($id_de_la_socket,"Password: ",false);
 
      // *****************************
      // Envoi du password
      // *****************************
      fputs ($id_de_la_socket, "Jisudhey56\n");
 
      // *****************************
      // Reception
      // *****************************
      reception($id_de_la_socket,$prompt_cisco,false);
 
      // *****************************
      // Indication au routeur que le buffer de reception est illimité
      // *****************************
      fputs ($id_de_la_socket, "terminal length 0\n");
 
      // *****************************
      // Reception
      // *****************************
      reception($id_de_la_socket,$prompt_cisco,false);
 
      // *****************************
      // Affichage du prompt
      // *****************************
      echo $prompt_cisco;
 
      // *****************************
      // Envoi de la commande
      // *****************************
      fputs ($id_de_la_socket, $commande_cisco);
 
      // *****************************
      // Reception
      // *****************************
      reception($id_de_la_socket,$prompt_cisco,true);
 
      // ********************************************
      // Fin du script général
      // ********************************************
      fin_du_script();
      }
else
      lookingglass_erreur(2);
 
function reception($id_de_la_socket,$chaine_attendue,$affichage)
  // Argument 1 : $id_de_la_socket est de type SOCKET. Il représente l'id de la socket à analyser.
  // Argument 2 : $chaine_attendue est de type char xx[xx]. Il représente la chaine de caractère indiquant la fin de la reception.
  // Argument 3 : $affichage est de type bool. Il indique si l'echo des caractères reçu doit être affiché.
      {
      // *****************************
      // Initiation des variables
      // *****************************
      $chaine_recue="";
      $tempo="";
      $condition_de_sortie=0;
 
      // *****************************
      // Boucle de reception
      // *****************************
      while($condition_de_sortie==0)
            {
            // *****************************
            // Valide si la chaine attendue est réceptionnée ou la fin du tampon
            // *****************************
            if (strpos($chaine_recue,$chaine_attendue)!=false||@feof($id_de_la_socket))
                  $condition_de_sortie=1;
 
            // *****************************
            // Reception des données de 1280 octets, mais peu importe dû au mode non bloquant
            // *****************************
            $tempo=@fgets($id_de_la_socket,1024);
 
            // *****************************
            // Force l'affiche
            // *****************************
            flush();
 
            // *****************************
            // Remplace le code de retour charriot pour correspondre à la norme html
            // *****************************
            $tempo=str_replace("\n","<br>",$tempo);
 
            // *****************************
            // Affichage des données recues
            // *****************************
            if ($affichage==true)
                  echo $tempo;
 
            // *****************************
            // Concatenation des donnée recue afin de pourvoir comparer par rapport à la chaine attendue de sortie
            // *****************************
            $chaine_recue.=$tempo;
            }
      }
 
function est_ce_une_ip_privee($adresse_ip)
  // Argument 1 : $adresse_ip est de type char xx[nn]. Il représente l'adresse IP à comparer.
  // Return     : La valeur retournée est de type bool. Il représente true si l'IP est de privée.
      {
      // ********************************************
      // Validation que la variable $adresse_ip est bien une IP
      // ********************************************
      if (ip2long($adresse_ip)==-1)
            return (false);         // !!!!! Attention je concidère les IP non valide comme une ip non privée !!!!!
 
      // ********************************************
      // Vérification si l'IP est compris dans le network 10/8
      // ********************************************
      if ( (ip2long($adresse_ip)>=ip2long("10.0.0.0")) && (ip2long($adresse_ip)<=ip2long("10.255.255.255")) )
            return (true);
 
      // ********************************************
      // Vérification si l'IP est compris dans le network 192.168/16
      // ********************************************
      if ( (ip2long($adresse_ip)>=ip2long("192.168.0.0")) && (ip2long($adresse_ip)<=ip2long("192.168.255.255")) )
            return (true);
 
      // ********************************************
      // Vérification si l'IP est compris dans le network 172.16/19
      // ********************************************
      if ( (ip2long($adresse_ip)>=ip2long("172.16.0.0")) && (ip2long($adresse_ip)<=ip2long("172.31.255.255")) )
            return (true);
 
      return (false);
      }
 
// ********************************************
// Fonction d'affichage de l'erreur de saisie
// ********************************************
function lookingglass_erreur($erreur) // $erreur représente le numéro d'erreur.
      {
      // ********************************************
      // Affichage de titre
      // ********************************************
      echo
            '
            <p align="center">
                  <b>
                        <font size="5" color="#008000">
                             Erreur
                        </font>
                  </b>
            </p>
            ';
 
      // ********************************************
      // Affichage de l'erreur
      // ********************************************
      echo
            '
            <p>
            ';
 
      // ********************************************
      // Message personnalisé
      // ********************************************
      if ($erreur==1)
            echo 'Désolé, pour des raisons de sécurité, l\'équipe FrameIP ne peut pas vous permettre d\'utiliser les adresses privées.';
      elseif ($erreur==2)
            echo 'Désolé, impossible d\'ouvrir la session TCP à destination du routeur.';
     
      // ********************************************
      // Fin du script général
      // ********************************************
      fin_du_script();
      }
 
function fin_du_script()
      {
      // ********************************************
      // Affiche de l'Url
      // ********************************************
      echo '
            <p align="right">
                  <a target="_blank" href="http://www.frameip.com">
                        www.frameip.com
                  </a>
            </p>
            ';
 
      // ********************************************
      // Fin de la page Html
      // ********************************************
      echo
            '
            </body>
 
            </html>
            ';
 
      // ********************************************
      // Fin du script général
      // ********************************************
      exit(0);
      }
 
?>



mot clé : vpn cisco route proc tcpip test ipv4 ipv6 ping voip traceroute icmp show length routeur tracert en lookingglass cpu mem hist conf t terminal bgp ip temps de reponse enable

Copyright © 2011-2015 FrameIP TcpIP. Tous droits réservés. Les marques et marques commerciales mentionnées appartiennent à leurs propriétaires respectifs. L'utilisation de ce site Web TcpIP implique l'acceptation des conditions d'utilisation et du règlement sur le respect de la vie privée.
Sécurité entreprise Téléphonie entreprise Expert de votre Infrastructure Test ADSL Serinya Operateur Telecom