更新 'test'

This commit is contained in:
suzhe 2023-12-05 19:47:01 +08:00
parent d25b6f96b5
commit 93f487e4ed

93
test
View File

@ -1 +1,94 @@
test
#include <libssh/libssh.h>
#include <stdio.h>
int main() {
// 定义目标服务器的信息
const char *hostname = "your_server_hostname";
const char *username = "your_username";
const char *password = "your_password";
// 初始化SSH会话
ssh_session session = ssh_new();
if (session == NULL) {
fprintf(stderr, "Error creating SSH session\n");
return 1;
}
// 设置SSH连接参数
ssh_options_set(session, SSH_OPTIONS_HOST, hostname);
ssh_options_set(session, SSH_OPTIONS_USER, username);
// 连接到SSH服务器
int rc = ssh_connect(session);
if (rc != SSH_OK) {
fprintf(stderr, "Error connecting to SSH server: %s\n", ssh_get_error(session));
ssh_free(session);
return 1;
}
// 使用密码进行身份验证
rc = ssh_userauth_password(session, NULL, password);
if (rc != SSH_AUTH_SUCCESS) {
fprintf(stderr, "Error authenticating with password: %s\n", ssh_get_error(session));
ssh_disconnect(session);
ssh_free(session);
return 1;
}
// 打开通道
ssh_channel channel = ssh_channel_new(session);
if (channel == NULL) {
fprintf(stderr, "Error creating channel: %s\n", ssh_get_error(session));
ssh_disconnect(session);
ssh_free(session);
return 1;
}
// 打开会话
rc = ssh_channel_open_session(channel);
if (rc != SSH_OK) {
fprintf(stderr, "Error opening channel session: %s\n", ssh_get_error(session));
ssh_channel_free(channel);
ssh_disconnect(session);
ssh_free(session);
return 1;
}
// 执行交互性命令
rc = ssh_channel_request_pty(channel);
if (rc != SSH_OK) {
fprintf(stderr, "Error requesting pty: %s\n", ssh_get_error(session));
ssh_channel_free(channel);
ssh_disconnect(session);
ssh_free(session);
return 1;
}
// 打开 shell
rc = ssh_channel_shell(channel);
if (rc != SSH_OK) {
fprintf(stderr, "Error opening shell: %s\n", ssh_get_error(session));
ssh_channel_free(channel);
ssh_disconnect(session);
ssh_free(session);
return 1;
}
// 从键盘获取输入并发送到 SSH 服务器
char buffer[256];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
ssh_channel_write(channel, buffer, strlen(buffer));
}
// 关闭 shell 通道
ssh_channel_send_eof(channel);
ssh_channel_close(channel);
// 释放资源
ssh_channel_free(channel);
ssh_disconnect(session);
ssh_free(session);
return 0;
}