Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alcatraz en 14 Junio 2010, 17:33 pm



Título: Ejecutar commando y leer resultado
Publicado por: alcatraz en 14 Junio 2010, 17:33 pm
Hola, ya se que para ejecutar un commando Linux desde C se puede hacer con system() o con execv(), pero no me interesa eso si no leer el resultado ya que se trata de una peticion OSCP para conocer el estado de unc ertificado.

El comando seria ago así:

Código:
'openssl ocsp -CAfile FICHEROCA -issuer FICHEROCASUBORDINADA -cert CERTIFICADO -url oscp.dnie.es'

Sólo se me ocurre redirigir la salida del comando a un fichero auxiliar y luego leer el contenido

Código:
comando > ficheroAuxiliar

pero no se si habrá una forma más directa o sencilla de hacer esto.
¿Alguna Idea? Gracias.


Título: Re: Ejecutar commando y leer resultado
Publicado por: Gallu en 14 Junio 2010, 17:59 pm
Podrías leer directamente desde el flujo de entrada de tu programa
esto lo consigues simplemente haciendo
Código
  1. File *fichero;
  2. fichero = stdin;
  3.  
a partir de alli puedes hacer cualqueir cosa que harias con un fichero , por ejemplo el
siguiente programa redirige la salida de dir al programa y le agrega una doble linea entre impresión e impresión
Código
  1. #include <stdio.h>
  2. #define MAX 50
  3.  
  4. int getLine(FILE *fichero , char s[], int lim){
  5. int c, i;
  6.  
  7. i=0;
  8. while(--lim > 0&&(c=fgetc(fichero))!=EOF && c!='\n')
  9. s[i++] = c;
  10. if(c=='\n')
  11. s[i++] = c;
  12. s[i]='\0';
  13. return i;
  14. }
  15.  
  16. int main(){
  17. FILE *fichero;
  18. fichero = stdin;
  19. char linea[MAX];
  20.  
  21. while((getLine(fichero , linea , MAX)) > 0){
  22. printf("\n=======================================================");
  23. printf("%s", linea); // imprime las lineas que encuentra en el flujo de entrada !
  24. }  
  25. }
  26.  

haciendo esto lo que podrias hacer es
comando | nombrePrograma

ya me dirás algo ....

de echo no tienes ni que declarar la variable fichero podrías hacer lo sigueinte y seguiria funcionando
Código
  1. while((getLine(stdin , linea , MAX)) > 0)
  2.  


Título: Re: Ejecutar commando y leer resultado
Publicado por: alcatraz en 14 Junio 2010, 19:30 pm
Gracias, eso es otra forma de hacerlo pero creo que no se adecua a mi problema, ya que tengo un programa principal que genera varios hilos y en cada hilo quiero que lanze el commando con los datos de cada hilo, por lo que no me vale ejecutar el commando y pasar el resultado por un pipe a mi programa principal.

Lo haré redirigiendo la salida del commando a un fichero auxiliar, pero gracias de todas formas.