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.
