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