Christopher Rasch
2/26/2008 3:19:00 AM
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")
=> [#<IO:0x10c0534>, #<IO:0x10c04f8>, #<IO:0x10c0494>]
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 <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
>
>
>
>
>
>