7.2-RELEASE-p2
Задача следующая:
нужна программка которая подключалась к свичам и делала какието действия, аналог на perle работает на ура, но там я испльзую библиотеку телнета,а в С нашел только такой вариант, если есть какая то библиотека для С подскажите буду признатилен)
#include <stdio.h>
#include <netdb.h>
#include <time.h>
#include <arpa/telnet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>char Buffer[204800];
char out_buf[BUFSIZ];
int hSocket,i, rd;
int main()
{
char *arg_host = "192.168.14.2";
int sock;
struct sockaddr_in addr;
struct hostent *srvinfo;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0)
{
perror("socket");
exit(1);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(23); //
srvinfo = gethostbyname(arg_host);
addr.sin_addr = *(struct in_addr *) srvinfo->h_addr;
if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
{
perror("connect");
exit(2);
}
sleep(1);
memset(Buffer,0, sizeof(Buffer));
rd=recv(sock, Buffer, sizeof(Buffer), 0);
printf("Recieved %d bytes: %s\n", rd, Buffer);
sleep(1);
memset(out_buf,0, sizeof(out_buf));
sprintf(out_buf, "%s", "Admin\r\n");//printf(out_buf);
rd = send(sock, (void*)&out_buf, sizeof(out_buf), 0);
sleep(1);
memset(Buffer,0, sizeof(Buffer));
rd = recv(sock, Buffer, sizeof(Buffer), 0);
printf("Recieved %d bytes: %s\n",rd, Buffer);
sleep(1);
memset(out_buf,0, sizeof(out_buf));
sprintf(out_buf, "%s", "password\r\n");//printf(out_buf);
rd = send(sock, (void*)&out_buf, sizeof(out_buf), 0);
sleep(1);
memset(Buffer,0, sizeof(Buffer));
rd = recv(sock, Buffer, sizeof(Buffer), 0);
printf("Recieved %d bytes: %s\n",rd, Buffer);
close(sock);
return 0;
}
когда запускаю выдает:
server# ./telcli
Recieved 26 bytes: ��������
UserName:
Recieved 39 bytes: Admin
Password:
UserName:
UserName:
Recieved 43 bytes: password
Password:authentication failed
server#
такое ощущение что "\r\n" нажатие Enter не работает, вернее срабатывает один раз.
почему не работает?
Заранее всем спасибо!!!