|
Packit Service |
31306d |
/*
|
|
Packit Service |
31306d |
This file is distributed in public domain. You can do whatever you want
|
|
Packit Service |
31306d |
with its content.
|
|
Packit Service |
31306d |
*/
|
|
Packit Service |
31306d |
#include <libssh/libssh.h>
|
|
Packit Service |
31306d |
#include <stdio.h>
|
|
Packit Service |
31306d |
#include <string.h>
|
|
Packit Service |
31306d |
#include "tests.h"
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
void do_connect(SSH_SESSION *session) {
|
|
Packit Service |
31306d |
char buf[4096] = {0};
|
|
Packit Service |
31306d |
CHANNEL *channel;
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
int error = ssh_connect(session);
|
|
Packit Service |
31306d |
if (error != SSH_OK) {
|
|
Packit Service |
31306d |
fprintf(stderr,"Error at connection: %s\n", ssh_get_error(session));
|
|
Packit Service |
31306d |
return;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
printf("Connected\n");
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
ssh_session_is_known_server(session);
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
error = authenticate(session);
|
|
Packit Service |
31306d |
if(error != SSH_AUTH_SUCCESS) {
|
|
Packit Service |
31306d |
fprintf(stderr,"Error at authentication: %s\n", ssh_get_error(session));
|
|
Packit Service |
31306d |
return;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
printf("Authenticated\n");
|
|
Packit Service |
31306d |
channel = ssh_channel_new(session);
|
|
Packit Service |
31306d |
ssh_channel_open_session(channel);
|
|
Packit Service |
31306d |
printf("Execute 'ls' on the channel\n");
|
|
Packit Service |
31306d |
error = ssh_channel_request_exec(channel, "ls");
|
|
Packit Service |
31306d |
if(error != SSH_OK){
|
|
Packit Service |
31306d |
fprintf(stderr, "Error executing command: %s\n", ssh_get_error(session));
|
|
Packit Service |
31306d |
return;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
printf("--------------------output----------------------\n");
|
|
Packit Service |
31306d |
while (ssh_channel_read(channel, buf, sizeof(buf), 0)) {
|
|
Packit Service |
31306d |
printf("%s", buf);
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
printf("\n");
|
|
Packit Service |
31306d |
printf("---------------------end------------------------\n");
|
|
Packit Service |
31306d |
ssh_channel_send_eof(channel);
|
|
Packit Service |
31306d |
fprintf(stderr, "Exit status: %d\n", ssh_channel_get_exit_status(channel));
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
printf("\nChannel test finished\n");
|
|
Packit Service |
31306d |
ssh_channel_close(channel);
|
|
Packit Service |
31306d |
ssh_channel_free(channel);
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
int main(int argc, char **argv){
|
|
Packit Service |
31306d |
SSH_OPTIONS *options=set_opts(argc, argv);
|
|
Packit Service |
31306d |
SSH_SESSION *session=ssh_new();
|
|
Packit Service |
31306d |
if(options==NULL){
|
|
Packit Service |
31306d |
return 1;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
ssh_set_options(session,options);
|
|
Packit Service |
31306d |
do_connect(session);
|
|
Packit Service |
31306d |
ssh_disconnect(session);
|
|
Packit Service |
31306d |
ssh_finalize();
|
|
Packit Service |
31306d |
return 0;
|
|
Packit Service |
31306d |
}
|