1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| int sock;
LIBSSH2_SESSION *session;
LIBSSH2_CHANNEL *channel;
const char *username="<ton_login>";
const char *password = "<ton_password>";
struct sockaddr_in sin;
WSADATA wsadata;
WSAStartup(MAKEWORD(2,0), &wsadata);
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_port = htons(22);
sin.sin_addr.s_addr = inet_addr ( "<ton_serveur>" );
if (connect(sock, (struct sockaddr*)(&sin),
sizeof(struct sockaddr_in)) != 0) {
fprintf(stderr, "failed to connect!\n");
return;
}
/* Connect */
session = libssh2_session_init();
if (libssh2_session_startup(session, sock)) {
/* Connection failure */
ASSERT ( FALSE );
} else {
/* Connection success */
}
libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_MD5);
if (libssh2_userauth_password(session, username, password))
{
char * msg;
int nLen;
libssh2_session_last_error ( session, &msg, &nLen, 0 );
ASSERT ( FALSE );
}
channel = libssh2_channel_open_session(session);
if ( !channel )
{
ASSERT ( FALSE );
}
if (libssh2_channel_shell(channel))
{
ASSERT ( FALSE );
}
char * cmd = "touch boo &\n";
if ( libssh2_channel_write(channel, cmd, strlen(cmd)) == 0 )
{
char * msg;
int nLen;
libssh2_session_last_error ( session, &msg, &nLen, 0 );
ASSERT ( FALSE );
}
if (channel) {
libssh2_channel_close(channel);
libssh2_channel_free(channel);
channel = NULL;
}
libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
libssh2_session_free(session);
Sleep(1000);
closesocket(sock); |
Partager