Remote Steuerung eines Servers
-
Hallo,
Folgender code:
#include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string> #include <pthread.h> #include <sys/stat.h> #include <fcntl.h> #include <signal.h> #define BUFFER_SIZE 8192 using namespace std; char* pipe_ (char *command) { char buf [90000]; char lese [90000]; FILE *p = popen(command, "r"); if(p==NULL) { printf("not so good..."); // exit(1); } while(feof(p)==0) { memset(buf, 0, strlen(buf)); fgets(buf, 1000, p); strcat(lese, buf); } pclose(p); return lese; } bool handle_commands (int sock) { char buffer [BUFFER_SIZE]; int bytes = 0; char *p; for (;;) { bytes = recv(sock, buffer, BUFFER_SIZE-1, 0); buffer[bytes] = '\0'; memset (buffer2, '\0', strlen(buffer2)); p = strstr(buffer, " PRIVMSG "); if (p) { p = strchr(p, ':'); if (p) { printf("Befehl ist: %s", (p+1)); pipe_ ((p+1)); } } } }Ich hab die Möglichkeit ein paar HomeServer über meinen eigenen IRC Server zu kontrollieren, in dem ich dann im IRC Befehle eingebe. Die Befehle wreden dann ausgelesen und gecuttet (p=strstr ...) und dann wird der eingegebene Befehl an die Pipe () übergeben.
Eine Eingabe wäre z.b. ls
aussehen würde das so:Befehl ist: ls
: not foundIch versteh das nicht, warum gibts bei der Pipe n Fehler?
Das müsste doch alles so passen oder?Danke für die Hilfen.
-
Kann es sein, dass du ein newline im string hast?
-
char lese[] ist eine lokale Variable von pipe_(), die nach dem Verlassen von pipe_() nicht mehr existiert.
-
jencas schrieb:
char lese[] ist eine lokale Variable von pipe_(), die nach dem Verlassen von pipe_() nicht mehr existiert.
klappe du assi!
am ende oder am anfang der variable ist ein \n da wett ich meinen hut drauf!
-
??