45 lines
850 B
C++
45 lines
850 B
C++
#include <iostream>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include "execute_cmd.h"
|
|
|
|
using namespace std;
|
|
|
|
|
|
int execute_cmd(char * cmd, char ** res)
|
|
{
|
|
char * result;
|
|
FILE *output = popen(cmd, "r");
|
|
if (output == NULL)
|
|
{
|
|
printf("Error opening ssh %s\n", strerror(errno));
|
|
return -1;
|
|
}
|
|
char buffer[10240];
|
|
size_t rsize = sizeof(buffer);
|
|
result = (char*)calloc(rsize, sizeof(char));
|
|
|
|
while (fgets(buffer, sizeof(buffer), output))
|
|
{
|
|
result = (char*)realloc(result, sizeof(buffer) + rsize);
|
|
rsize += sizeof(buffer);
|
|
strcat(result, buffer);
|
|
}
|
|
|
|
* res = result;
|
|
|
|
int return_code = pclose(output);
|
|
if (WIFEXITED(return_code))
|
|
{
|
|
return WEXITSTATUS(return_code);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|