Blame tests/test_exec.c

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
}