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 13/09/2007, 23h13   #1
Membre habitué
 
Avatar de Leobaillard
 
Étudiant
Inscription : juillet 2004
Messages : 313
Détails du profil
Informations personnelles :
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 313
Points : 138
Points : 138
Envoyer un message via Skype™ à Leobaillard
Par défaut [SSH2] Pas de retour avec ssh2_shell

Bonsoir à toutes et à tous !

J'essaye actuellement d'utiliser les fonctions fournies par ssh2 avec php. J'ai déjà testé ssh2_exec et je voulais essayer d'obtenir un terminal "interactif" avec ssh2_shell. Seulement, après avoir lancé une commande, je n'ai aucun retour. J'ai lu plusieurs messages sur des forums différents, fouillé google, la doc de php, et je n'ai rien trouvé. Je m'en remet donc à vous.
Je précise que je mets bien le '\n' à la fin de ma chaîne.

Merci d'avance pour votre aide
__________________
/// ( : Léo : ) \\\
---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

-------------------------

L'orbe du temps (Zelda like 2D en Delphi) : Le Site
Leobaillard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 15h48   #2
Invité régulier
 
Inscription : février 2006
Messages : 35
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 35
Points : 6
Points : 6
Je peut essayer de t'aider on te montrant mon code :
Code :
1
2
3
4
5
6
7
8
9
 
$connection = ssh2_connect([SERVEUR_SSH], 22);
ssh2_auth_password($connection, [SSH_ADMIN], [SSH_PWD]);
$stream = ssh2_exec($connection, [COMMANDE]);
stream_set_blocking($stream, TRUE);
$val = stream_get_contents($stream);
echo("<pre>"); //que si c'est dans une page HTML
print_r($val);
echo("</pre>"); //que si c'est dans une page HTML
et avec ça j'arrive à afficher le resultat de ma commande
rochenico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 18h52   #3
Membre habitué
 
Avatar de Leobaillard
 
Étudiant
Inscription : juillet 2004
Messages : 313
Détails du profil
Informations personnelles :
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 313
Points : 138
Points : 138
Envoyer un message via Skype™ à Leobaillard
Merci Mais ça j'arrive déjà à la faire. Mon problème concerne la fonction ssh2_shell. Et malheureusement je trouve pas de solution
__________________
/// ( : Léo : ) \\\
---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

-------------------------

L'orbe du temps (Zelda like 2D en Delphi) : Le Site
Leobaillard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 18h38   #4
Invité de passage
 
Inscription : octobre 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 5
Points : 2
Points : 2
on voit pas ton code
Jopa5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 21h12   #5
Membre habitué
 
Avatar de Leobaillard
 
Étudiant
Inscription : juillet 2004
Messages : 313
Détails du profil
Informations personnelles :
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 313
Points : 138
Points : 138
Envoyer un message via Skype™ à Leobaillard
Voilà voilà :

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
public function eShell_open()
    { #Ouvre un shell interactif
        $this->eShell = ssh2_shell( $this->connexion );
        usleep(50000);
        if ( !$this->eShell ) {
                trigger_error( 'Erreur lors de l\'ouverture d\'un shell interactif.', E_USER_ERROR );
        }
    }
 
    public function eShell_write( $commande )
    { #Entrée d'une commande dans le shell
        //$commande .= '\n';
        if ( !fwrite( $this->eShell, $commande ) )
        {
            trigger_error( 'Erreur lors de l\'envoi d\'une commande au shell distant');
        }
        else
        {
            //Passage du socket en mode bloquant
            //stream_set_blocking( $this->eShell, true );
            sleep(5);
        }
    }
 
    public function eShell_read()
    { #Lecture d'un retour de commande
        //Passage du socket en mode bloquant
        //stream_set_blocking( $this->eShell, true );
        //Récupération du contenu du flux
        $this->retour = '';
        while ( $this->sortie )
        {
            $this->sortie = fgets( $this->eShell );
            $this->retour .= $this->sortie;
        }
        return $this->retour;
        fclose( $this->eShell );
    }
Ce sont mes trois fonctions (d'une classe) qui #normalement# devrait me permettre de lancer une commande en mode console dans un shell 'intercatif'.
__________________
/// ( : Léo : ) \\\
---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

-------------------------

L'orbe du temps (Zelda like 2D en Delphi) : Le Site
Leobaillard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 14h45   #6
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
Je rencontre exactement le même problème. Je n'arrive pas à reprendre la main sur ma commande et donc je ne peux pas afficher le résultat de la requête.
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2008, 02h42   #7
Membre habitué
 
Avatar de Leobaillard
 
Étudiant
Inscription : juillet 2004
Messages : 313
Détails du profil
Informations personnelles :
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 313
Points : 138
Points : 138
Envoyer un message via Skype™ à Leobaillard
Bonjour, un petit up avec d'autres infos. Je viens de retenter l'expérience avec un code trouvé sur php.net. La commande a l'air de s'exécuter, mais la sortie est pour le moins bizarre...

Le code :
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
40
41
42
43
44
45
46
47
48
<?php
// Connection to SSH server
echo "Connexion SSH ";
if (!($resource=@ssh2_connect("192.168.0.160")))
{
    echo "[FAILED]<br />";
    exit(1);
}
echo "[OK]<br />";
 
// Authentification by login/passwd
echo "Authentification ";
if (!@ssh2_auth_password($resource,"user","pass"))
{
    echo "[FAILED]<br />";
    exit(1);
}
echo "[OK]<br />";
 
// We need a shell
echo "Shell stdio ";
if (!($stdio = @ssh2_shell($resource,"xterm")))
{
    echo "[FAILED]<br />";
    exit(1);
}
echo "[OK]<br />";
 
// Execution of any command
// Be careful to add an '\n' at the  end of the command
$command = "/bin/ls /home\n";
fwrite($stdio,$command);
 
// IMPORTANT
// For some obscur reasons, just after ur command, u need to make a sleep to be sure, that the command has reached the server and is running
usleep(35000);
 
// Then u can fetch the stream to see what happens on stdio
echo '<pre>';
while($line = fgets($stdio))
{
    flush();
    echo $line;//."<br />";
}
echo '</pre>';
// It's always cleaner to close all stream
fclose($stdio);
?>
La sortie (une partie, la page fait dix kilometres...) :

Citation:
Connexion SSH [OK]
Authentification [OK]
Shell stdio [OK]
Linux leochambre 2.6.22-14-generic #1 SMP Fri Feb 1 04:59:50 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Sun Feb 10 02:19:24 2008 from yodav3

/bin/ls /home
����������A����|������%n����&n؍n��������wddx_packet_start�nHDn�����������
[ZR���������������������������`v%�QY
p��p���(���p���G������/����������@��
�)�_��@��X���$�U�QY` XH����Œ��QY
@{WX���i&+����9����K�����P&n�����&n
H%n�In����wddx_packet_end��n�������mZR�
���������������������������t%�QYp�
�p���(���p���G������/����������@���
)�_��@��X���$�U�QY` XH����Œ��QY@{W
X���i&+����9����������n����'n&n
��������wddx_add_vars����n9��� �����@�n
����Гn�&n�����qwddx_deserialize�����������
�/T���������������������������p�,����
h$X ���$�U�����Xx���7V,���������$�U
�X���������V,�X���������},���|Q؂��$�U�X��������/T����������������
�����������Ї,����h$X ���$�U�����Xx���7V,���������$�U
�X���������V,�X���������},���|Q؂

[...]etc.
Ça a l'air d'être plein de caractères non imprimables et de noms de fonctions php...

Merci de votre aide !

PS: pour la sortie, quasiment tout était d'une traite. J'ai ici coupé les lignes pour pas pourrir de trop le design du forum.
__________________
/// ( : Léo : ) \\\
---C'est parce que la vitesse de la lumière est supérieure à celle du son, que certains paraissent brillants avant d'avoir l'air con---
http://leobaillard.org (Hébergement gratuit, prog, forums, et autres)

-------------------------

L'orbe du temps (Zelda like 2D en Delphi) : Le Site
Leobaillard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web