|
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 |
|