IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP & Telnet -> switch


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Points : 21
    Points
    21
    Par défaut PHP & Telnet -> switch
    Bonjour !

    Alors voici le contexte de mon problème :

    J'essaie d'accéder à des switchs (HP, cisco...) via PHP avec une communication en telnet (pour sauvegarder ou restaurer leurs fichiers de configuration)

    Après de nombreuses recherchent, j'ai vu que certaines personnes avaient trouvé leur bonheur en utilisant une bibliothèque qui fonctionne bien mais essentiellement pour cisco malheureusement !

    Actuellement j'essaie de communiquer en Telnet avec un HP 2610

    J'ai appris le PHP sur ce forum mais cela ne fait que 2 jours donc je ne suis pas un expert, loin de là !

    Voilà où j'en suis :

    Mon script en php se connecte à mon switch via le port 23 (telnet donc).
    Ce même script effectue la commande "show running-config", et j'essaie de lui faire faire automatiquement un "return" pour passer tous les "More" (puisqu'un switch ne renvoie que 15 lignes à la fois)

    Seulement voilà, Le message d'acceuil de HP s'affiche (quoique quelques caractères du style ÿyùezrhfgfgqfg le précède...)

    Et puis, au milieu de ma commande "show running config", des dizaines et des dizaines de caractères étrange (sortes de d'alembertiens, crochets, nombres en tout genres viennent polluer le résultat de la commande, qui s'affiche malgré tout !

    Et pour finir, un bon vieux "timed exeeded" au niveau de ma fgets...

    J'imagine que ce n'est pas facile de comprendre comme ça ce que j'essaie de vous dire mais j'espère que vous saurez me dire ou se situe mon erreur...


    Quelqu'un aurait une piste ?

    Merci d'avance pour me consacrer du temps et bonne journée !

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Vu que tu as l'air d'avoir pleins de mickeys, je pencherai pour un problème d'encodage. Solution: vérifie tous tes charsets

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Wouhou ça risque d'être long !

    Mais je vais tenter ma chance !

    Effectivement, même si comme je l'ai dit je suis totalement novice, les chaînes qui viennent polluer l'affichage de mon écran se terminent toutes de la même manière par un H. Je vais essayer de me renseigner la dessus.

    J'avais pensé qu'il s'agissait d'un problème de synchro entre les 2 terminaux mais une connection Telnet via Putty fonctionne à merveille !

    Merci pour votre aide !

    Au passage; si quelqu'un connait un tutoriel avec un code "propre" pour réaliser une connection Telnet via PHP pour des switch DE TOUTE MARQUE je suis preneur puisque je n'ai pas réussi à en trouver !

    Bonne journée à tous.


    <---EDIT--->

    Après quelques recherches, d'autres personnes ont rencontré ce problème avec des switchs HP !

    Comme : http://apache-commons.680414.n4.nabb...td2233424.html

    (J'utilise un 2610)

    La seule réponse que j'ai pu trouver ne m'a pas beaucoup avancé : quelqu'un a posté "I figured it out, I had to use the AAA fields".

    J'imagine qu'il parle de la commande telnet "aaa" avec authentication et compagnie, mais je vois pas ou il veut en venir !

    Une idée ?

    Merci de votre aide !

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Personnellement, j'ai pu identifier des problèmes de charset sur des chaines dont je ne connaissait pas l'encodage en les lisant avec un éditeur hexa et en regardant les tables de caractères, mais ça reste de la débrouille.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Je ne pense pas savoir faire de cette manière :/

    A supposer que j'y arrive, qu'est-ce que j'obtiens ?

    Je viens de prendre un switch cisco (2950) pour essayer, j'ai un problème similaire, même si les caractères "parasites" sont essentiellement des carrés.

    De plus, je fais face un a timeout dont je ne saurais expliquer l'origine

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Mes excuses pour ce double post, voici le code avec lequel j'obtiens ce "problème"

    NOTE IMPORTANTE : J'ai "calqué" (surement trop) le mini "tuto" trouvé sur google (mots clés php telnet chrogeek)

    Voici donc le code commenté avec ce que j'ai compris :

    Code : 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
    <html>
    	<head>
    		<title>Bienvenue</title>
    	</head>
     
    	<body>
    		<h1>Ceci est une page de test de connexion à un switch en Telnet</h1>
     
    	<?php
     
    		$switch = '192.168.2.12'; //IP de mon switch
    		$port = 23; // Port correspondant au Telnet
    		$fp = fsockopen($switch,$port);
    		$i = 1; // Voir utilisation plus bas dans la boucle while
     
    		if(!$fp)
    			{
    				echo 'La connexion telnet au switch : ' .$switch. 'a échoué';
    			}
    		else
    			{
     
    				fwrite($fp, "IciMonPassword\r\n"); // le cisco vérifie l'accès
    				fwrite($fp, "enable\r\n"); // activation des commandes telnet
    				fwrite($fp, "IciMonPassword\r\n"); // vérification des droits
    				fwrite($fp, "show running-config\r\n");
     
     
    				stream_set_timeout($fp, 2); // 2 secondes si je ne me suis pas trompé dans la syntaxe
    				while($i<45) //permet (si j'ai compris) d'afficher les 45 lignes qui vont suivre
    							 //note : l'exemple avec <300 sur le tutoriel que j'ai mentionné
    					{		 //me génère un time exeeded (30 sec) :(
    						$i++; //incrémentation
    						$line = fgets($fp, 1024); //capture les caractères de la ligne
    						echo $line.''; //affiche cette chaine de caractères
    						if(preg_match('!--More--!i', $line)) //Censé détecter les "More" car un switch
    							{								 //n'affiche que 15 lignes à la fois
    								fwrite($fp, "\r\n");//simule l'appui sur Entrée pour faire défiler les commandes
    							}
    						$info = stream_get_meta_data($fp); //retourne les infos sur le flux
    														   //notemment le timed_out
    						if($info['timed_out'])
    							{
    								echo 'délai de connexion dépassé';
    							}
    					}
    			}
    	?>
    	</body>
    </html>

    EDIT :

    Je ne suis pas convaincu qu'il existe une solution "universelle" (qui fonctionnerait quelque soit la marque du switch).

    Je me réoriente donc vers une nouvelle solution ! (Nombreux sont les gens à rencontrer ce problème de caractères parasites via PHP mais pas en mode console).

    Une solution consisterai en la création d'un script Perl qui s'occuperai de la liason tftp.

    Si je parviens à faire quelque chose de constructif, je partagerai !.

    En attendant, merci de m'avoir consacré du temps et bonne journée à tous

Discussions similaires

  1. [Librairie] [TELNET] Faire du telnet en PHP sur un serveur distant
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 10/06/2010, 14h24
  2. [Système] Exécution PHP via telnet
    Par hshamsan dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2008, 16h06
  3. Telnet conf switch
    Par calimero642 dans le forum Modules
    Réponses: 4
    Dernier message: 10/07/2006, 10h52
  4. Telnet + PHP, est possible ?
    Par nemesix dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2006, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo