From: Christopher Rasch Date: 2008-02-26T12:19:22+09:00 Subject: Re: Having trouble reading from stderr Thanks! However, stderr.gets hangs as well. Here's what the irb session looks like: irb(main):001:0> require 'open3' => true irb(main):002:0> stdin, stdout, stderr = Open3.popen3("ssh crasch@gatewaymachine.com -i /Users/crasch/.ssh/id_rsa.pub -L 2222:targetmachine:22 -N") => [#, #, #] irb(main):003:0> stderr.gets <--- hangs here Could it be that stderr has received a partial error message, but won't write anything out until it receives a signal that ssh process has ended? Chris switheyw@yahoo.com wrote: > The fix is simple - replace 'read' with 'gets', ie, puts stderr.gets. > > > > On Feb 25, 7:49 pm, Christopher Rasch 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 > > > > > >