Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

Adapter un tout ptit peu LookingGlass

Bonjour à tous 😆
J'essaye de programmer une interface woueb qui me permet de gérer des connexions réseaux sur l'ensemble d'un site (Le tout en PHP). J'ai été trés vite confronté au problème suivant : Se connecter (via PHP) en telnet sur des commutateurs et routeurs cisco (2948G, 3550 et 6500). Je suis donc tombé tout naturellement sur LookingGlass qui me paraît trés bien, mais j'ai du mal à l'adapter. Voila ce que j'aimerais faire :
- Utiliser l'une de ces deux commandes en fonction du switch :
--> 2948G : sh port status 2/$i
--> 3550 : sh int Fa0/$i status
Ou $i égale un port/switch.
En fonction de l'état du port, si il est "enabled", utiliser cette commande :
sh cam dyn 2/$i, pour connaître l'adresse mac visible sur le port (et son équivalent sur un 3550). J'ai essayé tant bien que mal en modifiant un peu votre code :
[code:1:3bbed8692d]<?php
function reception($id_de_la_socket,$chaine_attendue,$affichage){
$chaine_recue="";
$tempo="";
$condition_de_sortie=0;
while($condition_de_sortie==0){
if (strpos($chaine_recue,$chaine_attendue)!=false||@feof($id_de_la_socket))
$condition_de_sortie=1;
$tempo=fgets($id_de_la_socket,1024);
flush();
$tempo=str_replace("\n","<br>",$tempo);
if ($affichage==true)
echo $tempo;
$chaine_recue.=$tempo;
}
}
$switch="hostname";
$prompt_cisco="hostname>";
$commande_cisco="sh int status\n";
$id_de_la_socket=@fsockopen($switch,23,&$errno,&$errstr,2);
if($id_de_la_socket){
fputs ($id_de_la_socket, "mdp\n\n\n");
//Obligé de taper 2\n en plus, sinon le mot de passe n'ai pas accepté.
reception($id_de_la_socket,$prompt_cisco,false);
fputs ($id_de_la_socket, $commande_cisco);
reception($id_de_la_socket,$commande_cisco,true);
}
?>
[/code:1:3bbed8692d]
Cette page affiche bien le résultat escompté mais la boucle ne se termine pas, et je ne peux donc pas stocker ces résultats dans une variable, ou boucler sur un autre port ou une autre commande 😥
Si vous pouviez me donner un ptit coup de pouce 🙂
Merci à tous.
Salut jaywax,

Cela vient surement du fait que tu n'as pas passé ta socket en mode non bloquante.

// *****************************
// Configuration du timeout maximum à 20 pour être à -10 de celui de l'hébergeur
// *****************************
@socket_set_timeout($id_de_la_socket,20);

// *****************************
// Passage de la socket en mode non bloquant
// *****************************
@stream_set_blocking($id_de_la_socket,false);

@+
_SebF - Sébastien FONTAINE