Hi,
I’m writing a gui with ruby and glade and so far it works well. Now the
program I write a gui for has an option which wants you to type a
password in the console. I start it this way:
system(“anotherapp --encrypt”)
then in the commandline happens something until it gets printed:
Password:
And it wants me to type in a password. I want to send this password from
my gui to the cmdlline. But how can I get the Password in it? I tried to
pipe it with:
system(“echo ‘pwd’ | anotherapp --encrypt”)
but this doesn’t work at all.
this has nothing to do with ruby per se: the program requires a pty,
the ruby distribution has examples, including an ‘expect’ based
example, in ext/pty/expect_sample.rb.
Thanks for pointing me in the right direction. I now wrote a little loop
to do this work:
require ‘pty’
require ‘expect’
PTY.spawn(“ruby test.rb”) do |read_t,write_t,pid|
write_t.sync = true
read_t.expect(/^enter passphrase.*/) {write_t.print “123456”}
end
But I have a problem. How to find out if the spawned process executed
with or without errors? I mean in this example “ruby test.rb”. If I use
system I could do:
puts “error” if not system(“ruby test.rb”)
But PTY.spawn always just returns ‘nil’. Is there any way I can check
for correct execution?