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

C Discussion :

Problème d'exécution d'un programme c utilisant libssh


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Problème d'exécution d'un programme c utilisant libssh
    Bonsoir,
    J'essaie d'ourir une session ssh au travers d'un programme en C. Effet j'arrive à établir la connexion, mais le problème est que je n'arrive pas à exécuter une commande. Je me demande même si la création du cannal s'est bien faite.
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    int main(){
        ssh_session session;
        int verbosity = SSH_LOG_PROTOCOL;
        int port = 22;
        char* password = "root";
        int rc;
     
        session = ssh_new();
        if (session == NULL)
            return(-1);
     
        //Set options for SSH connection
        ssh_options_set(session,SSH_OPTIONS_HOST,"90.12.34.44");
        ssh_options_set(session,SSH_OPTIONS_LOG_VERBOSITY,&verbosity);
        ssh_options_set(session,SSH_OPTIONS_PORT,&port);
        ssh_options_set(session,SSH_OPTIONS_USER,"root");
     
        //Connect to server
     
        rc = ssh_connect(session);
        if (rc != SSH_OK){
            fprintf(stderr,"Error connecting to host %s\n",ssh_get_error(session));
    		ssh_free(session);
    		return(-1);
        }
     
        rc = ssh_userauth_password(session,NULL,password);
        if ( rc == SSH_AUTH_SUCCESS){
            printf("Authenticated correctly");
        }
     
    	ssh_channel channel;
    	channel = ssh_channel_new(session);
    	if(channel == NULL) return SSH_ERROR;
     
    	rc = ssh_channel_open_session(channel);
    	if (rc != SSH_OK){
    		ssh_channel_free(channel);
    		return rc;
    	}
     
    	rc = ssh_channel_request_exec(channel,"date");
    	if (rc != SSH_OK){
    		ssh_channel_close(channel);
    		ssh_channel_free(channel);
    		return rc;
    	}
     
    	char buffer[256];
    	unsigned int nbytes;
     
    	nbytes = ssh_channel_read(channel,buffer,sizeof(buffer),0);
    	while(nbytes > 0){
    		if(fwrite(buffer,1,nbytes,stdout)){
    			ssh_channel_close(channel);
    			ssh_channel_free(channel);
    			return SSH_ERROR;
    		}
     
    		nbytes = ssh_channel_read(channel,buffer,sizeof(buffer),0);
     
    		if (nbytes < 0){
    			ssh_channel_close(channel);
    			ssh_channel_free(channel);
    			return SSH_ERROR;
    		}
     
    		return 0;
    	}
    }
    j'ai le message suisvant quand je l'exécute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [2016/01/10 18:37:36.208930, 2] ssh_socket_connect:  Nonblocking connection socket: 3
    [2016/01/10 18:37:36.208953, 2] ssh_connect:  Socket connecting, now waiting for the callbacks to work
    [2016/01/10 18:37:36.209172, 1] socket_callback_connected:  Socket connection callback: 1 (0)
    [2016/01/10 18:37:36.214088, 1] ssh_client_connection_callback:  SSH server banner: SSH-2.0-OpenSSH_6.9p1 Debian-2+b1
    [2016/01/10 18:37:36.214130, 1] ssh_analyze_banner:  Analyzing banner: SSH-2.0-OpenSSH_6.9p1 Debian-2+b1
    [2016/01/10 18:37:36.214155, 1] ssh_analyze_banner:  We are talking to an OpenSSH client version: 6.9 (60900)
    [2016/01/10 18:37:36.263338, 2] ssh_packet_dh_reply:  Received SSH_KEXDH_REPLY
    [2016/01/10 18:37:36.266653, 2] ssh_client_curve25519_reply:  SSH_MSG_NEWKEYS sent
    [2016/01/10 18:37:36.266671, 2] ssh_packet_newkeys:  Received SSH_MSG_NEWKEYS
    [2016/01/10 18:37:36.266999, 2] ssh_packet_newkeys:  Signature verified and valid
    [2016/01/10 18:37:36.267033, 2] channel_open:  Creating a channel 43 with 64000 window and 32768 max packet
    [2016/01/10 18:37:36.304042, 1] ssh_packet_unimplemented:  Received SSH_MSG_UNIMPLEMENTED (sequence number 3)
    Le programme ne rend pas la main par la suite.
    Avec quelques printf j'ai vu que ça bloquait au niveau de la création du cannal.

    En vous remerciant d'avance pour vos réponses

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    t'as envisagé de mettre des printf pour voir jusqu'où se déroule ton programme ?
    j'avais pas vu les lignes en dessous du code dsl

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    bon, histoire de pas te laisser avec pour seule réponse un commentaire un peu pourri de ma part je viens de tester ton code à l'instant en modifiant juste ce qu'il fallait pour que ça compile sans warning (int main (void), un return 0; à la fin pour que gcc soit content, host, user, pass), tout fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    gruik@leonidas:~/Bureau/code/c/dvp/atosbi$ ./pouet 
    (...)
    [2] Channel windows are now (local win=63954 remote win=2097152)
    [2] growing window (channel 43:0) to 1280000 bytes
    Authenticated correctlymercredi 13 janvier 2016, 06:52:33 (UTC+0100)
    le problème provient peut-être de ton serveur ssh, à vérifier

Discussions similaires

  1. Problème d'exécution d'un programme utilisant Qwt
    Par zhebulonn dans le forum Qwt
    Réponses: 5
    Dernier message: 26/10/2012, 23h15
  2. Problème d’exécution d'un programme
    Par lucciana dans le forum Qt
    Réponses: 3
    Dernier message: 02/02/2011, 23h47
  3. Problème à l'exécution d'un programme C++ : bug assembleur
    Par lyxthe dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 16/08/2010, 21h43
  4. Problème à l'exécution d'un programme ADA
    Par daninou dans le forum Ada
    Réponses: 4
    Dernier message: 01/10/2007, 17h48
  5. Problèmes d'exécution d'un programme Fortran
    Par Butterfly83 dans le forum Fortran
    Réponses: 16
    Dernier message: 06/08/2007, 10h50

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