Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2006, 12h59   #1
Membre à l'essai
 
Inscription : juillet 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 67
Points : 22
Points : 22
Par défaut [SSH] Connexion sur un routeur

Hello,

Je tente de me connecter en ssh sur un routeur Cisco depuis une page php.
Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
$con=ssh2_connect('192.168.100.2', 22);
ssh2_auth_password($con, "test", "test"); 
 
$shell=ssh2_shell($con, 'xterm');
$stderr_stream = ssh2_fetch_stream($shell, SSH2_STREAM_STDERR);
 
fwrite( $shell, "configure terminal \n");
fwrite( $shell, "voicemail 999\n");
fwrite( $shell, "exit \n");
fwrite( $shell, "exit \n");
 
echo "Le stream des erreurs : ".$stderr_stream;
 
fclose($shell);
Je vois que la commande "configure terminal" est envoyée au routeur, car il m'affiche une ligne dans sa console, mais les autres commandes ne semblent pas avoir d'impact sur la configuration.
Quand je me connecte en ssh depuis linux, aucun problème, les modifications de config sont prises en compte, mais en php non.

Je ne sais pas trop comment debuger, quelqu'un aurait une idée ?

Un grand merci !
Teufboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2006, 13h58   #2
Membre à l'essai
 
Inscription : juillet 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 67
Points : 22
Points : 22
Bon voici des méthodes de connection et d'authentification un peu plus propres, mais cela ne fonctionne toujours pas :

> Connection ok
> Auth ok

Code :
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
 
<?php
/* Notification à l'utilisateur si le serveur termine la connexion */
function my_ssh_disconnect($reason, $message, $language) {
  printf("Le serveur s'est déconnecté avec le code [%d] et le message : %s\n",
         $reason, $message);
}
 
$methods = array(
  'kex' => 'diffie-hellman-group1-sha1',
  'client_to_server' => array(
    'crypt' => '3des-cbc',
    'comp' => 'none'),
  'server_to_client' => array(
    'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
    'comp' => 'none'));
 
$callbacks = array('disconnect' => 'my_ssh_disconnect');
 
$connection = ssh2_connect('192.168.100.2',22, $methods, $callbacks);
if (!$connection) die('Echec de la connexion');
 
if (ssh2_auth_password($connection, 'ciscoSDM', 'ciscoSDM')) {
  echo "Identification réussi !\n";
} else {
  die('Echec de l\'identification...');
}
 
$shell=ssh2_shell($connection, 'xterm');
 
$stderr_stream = ssh2_fetch_stream($shell, SSH2_STREAM_STDERR);
 
fwrite( $shell, "configure terminal \n");
fwrite( $shell, "telephony-service \n");
fwrite( $shell, "voicemail 777 \n");
fwrite( $shell, "exit \n");
fwrite( $shell, "exit \n");
 
fclose($shell);
je sèche grave, personne n'a une idée ?
Teufboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2006, 16h20   #3
Membre du Club
 
Avatar de pioule
 
Inscription : août 2003
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 65
Points : 69
Points : 69
Bin tu utilises des fonctions relatives au système de fichiers pour envoyer des commandes à travers une connection SSH ?

A mon avis, tu devrais essayer :

Code :
1
2
3
4
5
6
 
ssh2_exec( $shell, "configure terminal");
ssh2_exec( $shell, "telephony-service");
ssh2_exec( $shell, "voicemail 777");
ssh2_exec( $shell, "exit");
ssh2_exec( $shell, "exit");
PS : jamais fait de SSH, donc mon aide se limitera à des suggestions
pioule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 07h01   #4
Membre à l'essai
 
Inscription : juillet 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 67
Points : 22
Points : 22
Par défaut Re

Salut,

merci de ta réponse, malheureusement, j'avais déjà testé. Le problème est que la fontion ssh2_exec() permet d'envoyer une commande isolée au moyen de ssh alors que mes commandes on besoin de se suivre à la manière shell. La première permet d'entrer dans le menu de configuration, la deuxième de rentrer dans les services de téléphonie, puis on set le numéro de la voicemail, puis on quitte les deux menus. Donc pas possible, c'est pour cela que la version d'écriture dan le flux me semblait plus apropriée.

Citation:
Envoyé par pioule
A mon avis, tu devrais essayer :

Code :
1
2
3
4
5
6
 
ssh2_exec( $shell, "configure terminal");
ssh2_exec( $shell, "telephony-service");
ssh2_exec( $shell, "voicemail 777");
ssh2_exec( $shell, "exit");
ssh2_exec( $shell, "exit");
Le truc qui ne m'aide surtout pas, c'est que je ne peut rien voir des commandes envoyées. Quelqu'un peut-il me dépanner ?
Teufboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 09h49   #5
Membre du Club
 
Avatar de pioule
 
Inscription : août 2003
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 65
Points : 69
Points : 69
Et en séparant toutes tes commandes par des ; ?

Code :
ssh2_exec( $shell, "configure terminal;telephony-service;voicemail 777;exit;exit");
pioule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2006, 12h43   #6
Membre à l'essai
 
Inscription : juillet 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 67
Points : 22
Points : 22
Salut,

Non impossible, cela ne changer pas le problème. Il ne tient compte que de la première commande.

Help !!!
Teufboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2006, 11h38   #7
Membre à l'essai
 
Inscription : juillet 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 67
Points : 22
Points : 22
Par défaut Enfin !!!!

Voici la soluce !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
fwrite( $shell, "configure terminal \n");
sleep(1);
fwrite( $shell, "telephony-service \n");
sleep(1);
fwrite( $shell, "voicemail 777 \n");
sleep(1);
fwrite( $shell, "exit \n");
sleep(1);
fwrite( $shell, "exit \n");
sleep(1);
fclose($shell);

C.f.: http://ch2.php.net/manual/fr/function.ssh2-shell.php

Merci bien
Teufboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web