/* prsh.c v0.03 * Primitive remote shell client for use with prshd.c * By Feky */ #include #include #include #include #include #define BUFF 2048 int main(int argc, char *argv[]) { int Socket, Port, Bytes; struct hostent *He; struct sockaddr_in Addr; char Buff[BUFF]; if(argc != 3) { printf("Usage: %s [host] [port]\n", argv[0]); return 1; } Port = atoi(argv[2]); He = gethostbyname(argv[1]); if(He == NULL) { printf("Failed to get host by name.\n"); return 1; } Socket = socket(PF_INET, SOCK_STREAM, 0); if(Socket < 0) return 1; Addr.sin_family = AF_INET; Addr.sin_port = htons(Port); Addr.sin_addr = *((struct in_addr *)He->h_addr); memset(Addr.sin_zero, '\0', sizeof(Addr.sin_zero)); if(connect(Socket, (struct sockaddr *)&Addr, sizeof Addr) < 0){ printf("Failed to connect to %s.\n", argv[1]); return 1; } while(1) { printf("> "); fgets(Buff, BUFF, stdin); Bytes = send(Socket, Buff, strlen(Buff), 0); if(Bytes < 0) break; Bytes = recv(Socket, Buff, BUFF - 1, 0); if(Bytes < 0) break; Buff[Bytes] = '\0'; printf("< %s\n", Buff); } printf("Connection to %s closed.\n", argv[1]); close(Socket); return 0; }