El sáb, 26-06-2010 a las 12:45 -0300, Diego Woitasen escribió:
> El día 25 de junio de 2010 08:33, Alfredo Daniel Rezinovsky
> <[email protected]> escribió:
> > En bash puedo abrir un file descriptor para input y output a un archivo
> > usando:
> >  exec 4<> filename
> > despues de eso puedo leer y escribir el fd numero 4 con:
> >  echo $algo >&4
> >  read algo <&4
> >
> > Tambien puedo convertir el stdin o el stdout de un proceso en un fake
> > file descriptor usando <(proceso) o >(proceso) y puedo:
> >  exec 4< <(proceso)
> >  read algo <&4
> > o
> >  exec 4> >(proceso)
> >  echo $algo >&4
> >
> > La pregunta es como abrir stdin Y stdout de un proceso AL MISMO TIEMPO
> > (pueden ser fds distintos) para despues leer y escribir desde bash
> >
> > Lo que quiero es desde un script enviar comandos al proceso, leer la
> > respuesta, enviar más comandos, etc.
> >
> > --
> > Alfredo D. Rezinovsky
> > (Sys|Net)Admin
> > LI² -- FING -- UNCuyo
> >
> >
> >
> >
> >
> >
> 
> 
> Con un par de pipes tal vez? No se me ocurre otra forma.
> 
> pipe_in=/tmp/mypipe_in
> pipe_out=/tmp/mypipe_out
> 
> mknod $pipe_in p
> mknod $pipe_out p
> 
> nc smtp.blabla.com 25 < $pipe_in > $pipe_out 2>&1 &
> 
> exec 4>$pipe_in
> exec 5<$pipe_out
> 
> read input <&5
> echo $input
> 
> echo QUIT >&4
> 
> read input <&5
> echo $input
> 
> Igualmente hace esto en bash es horrible... tanto lenguaje de
> programación para hacer ésto más lindo...
> 
> saludos!
> 

Lo de los pipes tiene un problema, y es que no tienen buffer, ni no lees
el pipe el proceso que tiene que escribir no puede escribir.

Lamentablemente tengo que hacerlo en bash.

Responder a