mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-29 13:01:13 +03:00
Added an example for exec.
This commit is contained in:
@ -14,10 +14,12 @@ include_directories(
|
|||||||
add_executable(libssh_scp libssh_scp.c ${examples_SRCS})
|
add_executable(libssh_scp libssh_scp.c ${examples_SRCS})
|
||||||
add_executable(scp_download scp_download.c ${examples_SRCS})
|
add_executable(scp_download scp_download.c ${examples_SRCS})
|
||||||
add_executable(samplessh sample.c ${examples_SRCS})
|
add_executable(samplessh sample.c ${examples_SRCS})
|
||||||
|
add_executable(exec exec.c ${examples_SRCS})
|
||||||
|
|
||||||
target_link_libraries(libssh_scp ${LIBSSH_SHARED_LIBRARY})
|
target_link_libraries(libssh_scp ${LIBSSH_SHARED_LIBRARY})
|
||||||
target_link_libraries(scp_download ${LIBSSH_SHARED_LIBRARY})
|
target_link_libraries(scp_download ${LIBSSH_SHARED_LIBRARY})
|
||||||
target_link_libraries(samplessh ${LIBSSH_SHARED_LIBRARY})
|
target_link_libraries(samplessh ${LIBSSH_SHARED_LIBRARY})
|
||||||
|
target_link_libraries(exec ${LIBSSH_SHARED_LIBRARY})
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
${LIBSSH_PUBLIC_INCLUDE_DIRS}
|
${LIBSSH_PUBLIC_INCLUDE_DIRS}
|
||||||
|
67
examples/exec.c
Normal file
67
examples/exec.c
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/* simple exec example */
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <libssh/libssh.h>
|
||||||
|
#include "examples_common.h"
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
ssh_session session;
|
||||||
|
ssh_channel channel;
|
||||||
|
ssh_buffer buf;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
session = connect_ssh("localhost", NULL, 0);
|
||||||
|
if (session == NULL) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
channel = channel_new(session);;
|
||||||
|
if (channel == NULL) {
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = channel_open_session(channel);
|
||||||
|
if (rc < 0) {
|
||||||
|
channel_close(channel);
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = channel_request_exec(channel, "ps aux");
|
||||||
|
if (rc < 0) {
|
||||||
|
channel_close(channel);
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (channel_is_open(channel)) {
|
||||||
|
while (channel_poll(channel, 0) >= 0) {
|
||||||
|
buf = buffer_new();
|
||||||
|
rc = channel_read_buffer(channel, buf, 0, 0);
|
||||||
|
if (rc < 0) {
|
||||||
|
buffer_free(buf);
|
||||||
|
channel_close(channel);
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%s\n", (char *) buffer_get(buf));
|
||||||
|
|
||||||
|
buffer_free(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
channel_send_eof(channel);
|
||||||
|
channel_close(channel);
|
||||||
|
|
||||||
|
ssh_disconnect(session);
|
||||||
|
ssh_finalize();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Reference in New Issue
Block a user