Blame tests/ssh_ping.c

Packit Service 31306d
/* ssh_ping.c */
Packit Service 31306d
/*
Packit Service 31306d
Copyright 2018 Red Hat, Inc
Packit Service 31306d
Packit Service 31306d
Author: Jakub Jelen <jjelen@redhat.com>
Packit Service 31306d
Packit Service 31306d
This file is part of the SSH Library
Packit Service 31306d
Packit Service 31306d
You are free to copy this file, modify it in any way, consider it being public
Packit Service 31306d
domain. This does not apply to the rest of the library though, but it is
Packit Service 31306d
allowed to cut-and-paste working code from this file to any license of
Packit Service 31306d
program.
Packit Service 31306d
The goal is to show the API in action. It's not a reference on how terminal
Packit Service 31306d
clients must be made or how a client should react.
Packit Service 31306d
*/
Packit Service 31306d
Packit Service 31306d
#include <stdio.h>
Packit Service 31306d
#include <stdlib.h>
Packit Service 31306d
#include <libssh/libssh.h>
Packit Service 31306d
Packit Service 31306d
int main(int argc, char **argv)
Packit Service 31306d
{
Packit Service 31306d
    const char *banner = NULL;
Packit Service 31306d
    ssh_session session = NULL;
Packit Service 31306d
    int rc = 1;
Packit Service 31306d
Packit Service 31306d
    if (argc < 1 || argv[1] == NULL) {
Packit Service 31306d
        fprintf(stderr, "Error: Need an argument (hostname)\n");
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    session = ssh_new();
Packit Service 31306d
    if (session == NULL) {
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_HOST, argv[1]);
Packit Service 31306d
    if (rc < 0) {
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    /* The automatic username is not available under uid wrapper */
Packit Service 31306d
    rc = ssh_options_set(session, SSH_OPTIONS_USER, "ping");
Packit Service 31306d
    if (rc < 0) {
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    rc = ssh_connect(session);
Packit Service 31306d
    if (rc != SSH_OK) {
Packit Service 31306d
        fprintf(stderr, "Connection failed : %s\n", ssh_get_error(session));
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    banner = ssh_get_serverbanner(session);
Packit Service 31306d
    if (banner == NULL) {
Packit Service 31306d
        fprintf(stderr, "Did not receive SSH banner\n");
Packit Service 31306d
        goto out;
Packit Service 31306d
    }
Packit Service 31306d
Packit Service 31306d
    printf("OK: %s\n", banner);
Packit Service 31306d
    rc = 0;
Packit Service 31306d
Packit Service 31306d
out:
Packit Service 31306d
    ssh_free(session);
Packit Service 31306d
    return rc;
Packit Service 31306d
}
Packit Service 31306d