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

Bibliothèques et frameworks PHP Discussion :

[SSH2] Pas de retour avec ssh2_shell


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    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

  2. #2
    Membre averti
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Par défaut
    Je peut essayer de t'aider on te montrant mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Par défaut
    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

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Par défaut
    on voit pas ton code

  5. #5
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Par défaut
    Voilà voilà :

    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
    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

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    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.

  7. #7
    Membre éclairé
    Avatar de Leobaillard
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2004
    Messages
    313
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 313
    Par défaut
    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 : 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
    <?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...) :

    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

Discussions similaires

  1. Ouverture d'un fichier texte avec IE (Pas de retour à la ligne)
    Par ran_hery dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 08/08/2013, 08h51
  2. pas de retour a la ligne avec \n ?
    Par oldergod dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 17/07/2009, 11h11
  3. Réponses: 2
    Dernier message: 04/06/2009, 20h51
  4. [Firebird] on ne peux pas l'exploiter avec Delphi 2005 ??
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/04/2005, 11h40
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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