Refactored the connect_ssh example function
into a new file
Этот коммит содержится в:
родитель
7fed54b1e5
Коммит
f90ae73b6d
@ -4,6 +4,7 @@ set(examples_SRCS
|
||||
libssh_scp.c
|
||||
authentication.c
|
||||
knownhosts.c
|
||||
connect_ssh.c
|
||||
)
|
||||
|
||||
include_directories(
|
||||
|
63
examples/connect_ssh.c
Обычный файл
63
examples/connect_ssh.c
Обычный файл
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* connect_ssh.c
|
||||
* This file contains an example of how to connect to a
|
||||
* SSH server using libssh
|
||||
*/
|
||||
|
||||
/*
|
||||
Copyright 2009 Aris Adamantiadis
|
||||
|
||||
This file is part of the SSH Library
|
||||
|
||||
You are free to copy this file, modify it in any way, consider it being public
|
||||
domain. This does not apply to the rest of the library though, but it is
|
||||
allowed to cut-and-paste working code from this file to any license of
|
||||
program.
|
||||
The goal is to show the API in action. It's not a reference on how terminal
|
||||
clients must be made or how a client should react.
|
||||
*/
|
||||
|
||||
#include <libssh/libssh.h>
|
||||
#include "examples_common.h"
|
||||
#include <stdio.h>
|
||||
|
||||
ssh_session connect_ssh(const char *host, const char *user,int verbosity){
|
||||
ssh_session session;
|
||||
ssh_options options;
|
||||
int auth=0;
|
||||
|
||||
options=ssh_options_new();
|
||||
if(user != NULL){
|
||||
if (ssh_options_set_username(options,user) < 0) {
|
||||
ssh_options_free(options);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (ssh_options_set_host(options,host) < 0) {
|
||||
ssh_options_free(options);
|
||||
return NULL;
|
||||
}
|
||||
ssh_options_set_log_verbosity(options,verbosity);
|
||||
session=ssh_new();
|
||||
ssh_set_options(session,options);
|
||||
if(ssh_connect(session)){
|
||||
fprintf(stderr,"Connection failed : %s\n",ssh_get_error(session));
|
||||
ssh_disconnect(session);
|
||||
return NULL;
|
||||
}
|
||||
if(verify_knownhost(session)<0){
|
||||
ssh_disconnect(session);
|
||||
return NULL;
|
||||
}
|
||||
auth=authenticate_console(session);
|
||||
if(auth==SSH_AUTH_SUCCESS){
|
||||
return session;
|
||||
} else if(auth==SSH_AUTH_DENIED){
|
||||
fprintf(stderr,"Authentication failed\n");
|
||||
} else {
|
||||
fprintf(stderr,"Error while authenticating : %s\n",ssh_get_error(session));
|
||||
}
|
||||
ssh_disconnect(session);
|
||||
return NULL;
|
||||
}
|
@ -13,9 +13,10 @@ clients must be made or how a client should react.
|
||||
#ifndef EXAMPLES_COMMON_H_
|
||||
#define EXAMPLES_COMMON_H_
|
||||
|
||||
#include <libssh/libssh.h>
|
||||
int authenticate_console(ssh_session session);
|
||||
int authenticate_kbdint(ssh_session session);
|
||||
int verify_knownhost(ssh_session session);
|
||||
|
||||
ssh_session connect_ssh(const char *hostname, const char *user, int verbosity);
|
||||
|
||||
#endif /* EXAMPLES_COMMON_H_ */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user