Utilisation de la libssh2 en c++

Le
Frédéric Kuhn
Hello,

Je débute en c++ et je travaille sur linux/bsd.

J'avais besoin d'une classe me permettant dans l'immédiat d'exécuter
des commandes en ouvrant un shell et par la suite du scp/sftp. Pour
cela je voulais utiliser la libssh2. Pour exécuter une commande
l'exemple : http://www.libssh2.org/examples/ssh2_exec.html me laissait
penser que ce n'était pas insurmontable et réaliste.

C'est maintenant que ça se corse pour moi. J'ai deux problèmes.

Le premier.

J'ai ma classe CSsh qui va contenir :
1. des variables publiques dont : 
LIBSSH2_SESSION *session;
LIBSSH2_CHANNEL *channel;
2. des méthodes publiques :
sshConnect : méthode allant me permettre de me connecter avec les
identifiants etc…
sshRequestShell : méthode qui va s'occuper de me mettre en place un
shell.

sshConnect fonctionne, j'arrive bien à me connecter et c'est là que la
variable « *session » va être initialisée.

Dans la méthode « sshRequestShell » je vais utiliser la variable «
*session » pour initialiser la variable « *channel ». Ça se fait pa=
r :

this->channel = libssh2_channel_open_session(this->session)

Le problème c'est que si j'ajoute cette ligne dans « sshRequestShell =
»
j'ai une erreur de segmentation. Si je l'ajoute dans « sshConnect »
tout se passe bien. C'est ce que je ne comprends pas.

Le second.

Certaines commandes, mettons passwd demande des informations
complémentaires à saisir une fois la commande exécutée. Dans un
précédent test, j'arrivais à exécuter la commande, a récupérer =
son
résultat, mais je n'arrivais pas à lui répondre de manière à ce q=
u'il
en tienne compte. Dû moins tout ce que je ne récupérai plus rien. J'a=
i
du mal m'y prendre.

J'avais en fait réussi à faire tout ça en perl, mais là je sèche =
déjà
sur mon premier problème.

Si quelqu'un avait une suggestion, je suis tout ouïe.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Frédéric Kuhn
Le #22778101
On 10 nov, 13:43, Frédéric Kuhn
Hello,

Je débute en c++ et je travaille sur linux/bsd.

J'avais besoin d'une classe me permettant dans l'immédiat d'exécuter
des commandes en ouvrant un shell et par la suite du scp/sftp. Pour
cela je voulais utiliser la libssh2. Pour exécuter une commande
l'exemple :http://www.libssh2.org/examples/ssh2_exec.htmlme laissait
penser que ce n'était pas insurmontable et réaliste.

C'est maintenant que ça se corse pour moi. J'ai deux problèmes.

Le premier.

J'ai ma classe CSsh qui va contenir :
1. des variables publiques dont : 
    LIBSSH2_SESSION *session;
    LIBSSH2_CHANNEL *channel;
2. des méthodes publiques :
  sshConnect : méthode allant me permettre de me connecter avec les
identifiants etc…
  sshRequestShell : méthode qui va s'occuper de me mettre en place un
shell.

sshConnect fonctionne, j'arrive bien à me connecter et c'est là que l a
variable « *session » va être initialisée.

Dans la méthode « sshRequestShell » je vais utiliser la variable «
*session » pour initialiser la variable « *channel ». Ça se fait par :

this->channel = libssh2_channel_open_session(this->session)

Le problème c'est que si j'ajoute cette ligne dans « sshRequestShell »
j'ai une erreur de segmentation. Si je l'ajoute dans « sshConnect »
tout se passe bien. C'est ce que je ne comprends pas.

Le second.

Certaines commandes, mettons passwd demande des informations
complémentaires à saisir une fois la commande exécutée. Dans un
précédent test, j'arrivais à exécuter la commande, a récupére r son
résultat, mais je n'arrivais pas à lui répondre de manière à ce qu'il
en tienne compte. Dû moins tout ce que je ne récupérai plus rien. J 'ai
du mal m'y prendre.

J'avais en fait réussi à faire tout ça en perl, mais là je sèch e déjà
sur mon premier problème.

Si quelqu'un avait une suggestion, je suis tout ouïe.

Merci.



Au temps pour moi, j'ai fait une énorme erreur pour la première
partie. On vient de me faire remarquer que mon contrôleur fermait la
connexion avant de demander un shell d'où l'erreur de segmentation…

Désolé, j'avais cherché pendant un jour pour ce point avant de me
décider à poster ici :/
Publicité
Poster une réponse
Anonyme