begin process at 2013 06 20 03:04:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > LOOKINKGLASS - CISCO - PING - TRACEROUTE - FSOCKOPEN()

LOOKINKGLASS - CISCO - PING - TRACEROUTE - FSOCKOPEN()


 Information sur la source

Note :
9 / 10 - par 8 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Initié Date de création :01/04/2004 Date de mise à jour :10/04/2004 01:20:06 Vu / téléchargé :7 794 / 406

Auteur : _sebf

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Ce code Php a pour but de prendre la main sur un routeur Cisco et de passer des commandes.
Les commandes permetent l'execution d'un ping, d'un traceroute, et de la visualisation de l'occupation mémoire et processeur du routeur.

Une démo du code est disponnible à l'adresse suivante :
http://www.frameip.com/lookingglass/

----------- -----------
http://www.frameip.com
Pour ceux qui aiment TCPIP
----------------------


Source

  • <?php
  • // ********************************************
  • // Nom du script : lookingglass.php
  • // Auteur : SebF@frameIP.com.pas.de.spam
  • // Date de création : 15 mars 2004
  • // 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";
  • // **********************************************
  • // Récupération de la date et heure
  • // **********************************************
  • $annee=date("Y");
  • $mois=date("m");
  • $jour=date("d");
  • $heure=date("H");
  • $minute=date("i");
  • $seconde=date("s");
  • // **********************************************
  • // Récupération de l'IP cliente
  • // **********************************************
  • $ip_client=getenv("REMOTE_ADDR");
  • // **********************************************
  • // Récupération du Ptr de l'IP cliente
  • // **********************************************
  • $ptr=gethostbyaddr("$ip_client");
  • if ($ptr==$ip_client)
  • $ptr="Pas de ptr";
  • // **********************************************
  • // Récupération du port TCP source
  • // **********************************************
  • $port_source=getenv("REMOTE_PORT");
  • // **********************************************
  • // Récupération de l'IP du browser
  • // **********************************************
  • $ip_browser=getenv("HTTP_X_FORWARDED_FOR");
  • // *****************************
  • // 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, "password\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);
  • }
  • ?>
<?php

// ********************************************
// Nom du script : lookingglass.php
// Auteur : SebF@frameIP.com.pas.de.spam
// Date de création : 15 mars 2004
// 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";

// **********************************************
// Récupération de la date et heure
// **********************************************
$annee=date("Y");
$mois=date("m");
$jour=date("d");
$heure=date("H");
$minute=date("i");
$seconde=date("s");

// **********************************************
// Récupération de l'IP cliente
// **********************************************
$ip_client=getenv("REMOTE_ADDR");

// **********************************************
// Récupération du Ptr de l'IP cliente
// **********************************************
$ptr=gethostbyaddr("$ip_client");
if ($ptr==$ip_client)
	$ptr="Pas de ptr";

// **********************************************
// Récupération du port TCP source
// **********************************************
$port_source=getenv("REMOTE_PORT");

// **********************************************
// Récupération de l'IP du browser
// **********************************************
$ip_browser=getenv("HTTP_X_FORWARDED_FOR");

// *****************************
// 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, "password\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);
	}

?>


 Conclusion

Vennez voir le fonctionnement ici :
http://www.frameip.com/lookingglass/

---------- ------------
http://www.frameip.com
Pour ceux qui aiment TCPIP
----------------------


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip MESURER LE DÉBIT DE LA BANDE PASSANTE
Source avec Zip CRÉATION D'ALERTES DANS LE FORUM PHPBB
Source avec Zip RSS - LES 5 DERNIERS POST DE PHPBB
Source avec Zip LIST UN REPERTOIRE ET CRÉE LES LIENS HTML
Source avec Zip SUPERVISION DES PORTS OUVERTS - SCAN TCP

 Sources de la même categorie

Source avec Zip REDIRECTION VERS LA VERSION MOBILE/PC D'UNE PAGE par playerpsp
Source avec Zip FENÊTRE PSEUDO MODALE INCORPORÉE DANS UN SCRIPT PHP SIMPLIFI... par aladec2007
Source avec Zip WEBSERVICE AVEC PHP par sitoumbaz
Source avec Zip ESPACE MEMBRE AVEC IDENTIFICATION par floflode69
INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836

Commentaires et avis

Commentaire de Mechanicman le 01/04/2004 20:34:35

Très bon script....à exécuter sur son serveur personnel, pour ne pas avoir de problème. En effet, je connais un ami ayant eu un probleme avec son FAI car il utilisait les commandes du ser veur d'hébergement pour obtenir des infos

9/10

Commentaire de _sebf le 10/04/2004 01:20:58

J'ai mis à jour le code.

J'ai supprimé les références à ../variables.php et ../compteur.php. Pour mettre leurs contenu à la place. Tout tiens en un seul fichier maintenant.

----------------------
SebF

http://www.frameip.com
Pour ceux qui aiment TCPIP
----------------------

Commentaire de thepopolinux le 11/04/2004 00:32:14

Super script très interessant.

10/10

Commentaire de fattouch_squall le 17/10/2007 20:54:37

c un excellene script mé je trouve ke tauré mieu fé si tu peu faire la configuration du routeur en mm temp puiska ta ouvert une socket telnet sur le routeur tu trouve pa

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales