aboutsummaryrefslogtreecommitdiff
path: root/examples/connect_ssh.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2009-09-06 12:54:57 +0300
committerAris Adamantiadis <aris@0xbadc0de.be>2009-09-13 14:03:34 +0300
commitf90ae73b6d0d8c6993a200045770344ce5252a92 (patch)
treeab23a3ee7a270cdf6519c237d274cf63ce3da9d0 /examples/connect_ssh.c
parent7fed54b1e574779dac61aafec6343a47bb116493 (diff)
downloadlibssh-f90ae73b6d0d8c6993a200045770344ce5252a92.tar.gz
libssh-f90ae73b6d0d8c6993a200045770344ce5252a92.tar.xz
libssh-f90ae73b6d0d8c6993a200045770344ce5252a92.zip
Refactored the connect_ssh example function
into a new file
Diffstat (limited to 'examples/connect_ssh.c')
-rw-r--r--examples/connect_ssh.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/examples/connect_ssh.c b/examples/connect_ssh.c
new file mode 100644
index 0000000..cfc6bb1
--- /dev/null
+++ b/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;
+}