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;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
 |