Add a exec test.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@713 7dcaeef0-15fb-0310-b436-a5af3365683c
Этот коммит содержится в:
родитель
6c51183f0e
Коммит
dc07d46cca
@ -1,9 +1,12 @@
|
|||||||
all: test_tunnel
|
all: test_tunnel test_exec
|
||||||
CFLAGS=-I../include/ -g -Wall
|
CFLAGS=-I../include/ -g -Wall
|
||||||
LDFLAGS=-lssh -L../libssh/.libs
|
LDFLAGS=-lssh -L../build/libssh/
|
||||||
|
|
||||||
test_tunnel: test_tunnel.o authentication.o connection.o
|
test_tunnel: test_tunnel.o authentication.o connection.o
|
||||||
gcc -o $@ $^ $(LDFLAGS)
|
gcc -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
|
test_exec: test_exec.o authentication.o connection.o
|
||||||
|
gcc -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o test_tunnel
|
rm -f *.o test_tunnel
|
||||||
|
@ -47,7 +47,7 @@ static int auth_kbdint(SSH_SESSION *session){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int authenticate (SSH_SESSION *session){
|
int authenticate (SSH_SESSION *session){
|
||||||
int auth=ssh_userauth_autopubkey(session);
|
int auth=ssh_userauth_autopubkey(session, NULL);
|
||||||
char *password;
|
char *password;
|
||||||
if(auth==SSH_AUTH_ERROR){
|
if(auth==SSH_AUTH_ERROR){
|
||||||
fprintf(stderr,"Authenticating with pubkey: %s\n",ssh_get_error(session));
|
fprintf(stderr,"Authenticating with pubkey: %s\n",ssh_get_error(session));
|
||||||
|
62
tests/test_exec.c
Обычный файл
62
tests/test_exec.c
Обычный файл
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
This file is distributed in public domain. You can do whatever you want
|
||||||
|
with its content.
|
||||||
|
*/
|
||||||
|
#include <libssh/libssh.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
void do_connect(SSH_SESSION *session) {
|
||||||
|
char buf[4096] = {0};
|
||||||
|
CHANNEL *channel;
|
||||||
|
|
||||||
|
int error = ssh_connect(session);
|
||||||
|
if (error != SSH_OK) {
|
||||||
|
fprintf(stderr,"Error at connection: %s\n", ssh_get_error(session));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("Connected\n");
|
||||||
|
|
||||||
|
ssh_is_server_known(session);
|
||||||
|
|
||||||
|
error = authenticate(session);
|
||||||
|
if(error != SSH_AUTH_SUCCESS) {
|
||||||
|
fprintf(stderr,"Error at authentication: %s\n", ssh_get_error(session));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("Authenticated\n");
|
||||||
|
channel = channel_new(session);
|
||||||
|
channel_open_session(channel);
|
||||||
|
printf("Execute 'ls' on the channel\n");
|
||||||
|
error = channel_request_exec(channel, "ls");
|
||||||
|
if(error != SSH_OK){
|
||||||
|
fprintf(stderr, "Error executing command: %s\n", ssh_get_error(session));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("--------------------output----------------------\n");
|
||||||
|
while (channel_read(channel, buf, sizeof(buf), 0)) {
|
||||||
|
printf("%s", buf);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
printf("---------------------end------------------------\n");
|
||||||
|
channel_send_eof(channel);
|
||||||
|
fprintf(stderr, "Exit status: %d\n", channel_get_exit_status(channel));
|
||||||
|
|
||||||
|
printf("\nChannel test finished\n");
|
||||||
|
channel_close(channel);
|
||||||
|
channel_free(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
SSH_OPTIONS *options=set_opts(argc, argv);
|
||||||
|
SSH_SESSION *session=ssh_new();
|
||||||
|
if(options==NULL){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
ssh_set_options(session,options);
|
||||||
|
do_connect(session);
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
Загрузка…
x
Ссылка в новой задаче
Block a user