The fix is simple - replace 'read' with 'gets', ie, puts stderr.gets.



On Feb 25, 7:49 pm, Christopher Rasch <cra... / gmail.com> wrote:
> Hi,
>
> I'm trying to write a script that will establish an ssh tunnel through
> "gatewaymachine.com" to a "targetmachine" on the other side.  Sometimes
> there's already a tunnel established on the same port, in which case,
> the command fails with an error message.
>
> I'd like to be able to read the error message from the script.  If the
> script failed due to an incorrect port number, I'd like increment the
> port number and try again.
>
> Based on my google search, the popen3 command from the open3 library is
> what I want to use.
>
> But when I try to read from stderr, the read command never returns.
> Here's the code:
>
> require 'open3'
>
> stdin, stdout, stderr = Open3.popen3("ssh cra... / gatewaymachine.com -i
> /Users/crasch/.ssh/id_rsa.pub -L 2222:targetmachine:22 -N")
>
> puts stderr.read <---hangs indefinitely here
>
> Any suggestions for what might be happening?  Thanks for any suggestions
> you may wish to provide.
>
> Chris