using gnupg to encrypt a file with only a passphrase. prompt> echo 'hello world' >> test prompt> gpg -c test Enter passphrase: Repeat passphrase: prompt> note: I have not shown the many backspaces. however if there already exists a 'test.gpg' file then there is third question. prompt> echo 'hello world' >> test prompt> gpg -c test Enter passphrase: Repeat passphrase: File `test.gpg' exists. Overwrite? (y/N) I want to listen for: 'Enter passphrase: ' 'Repeat passphrase: ' eof? In case I get something else than eof? then I want to raise an error. -- Simon Strandgaard File.open("test", "a+") do |f| 500000.times { f.write("helloworld") } end require 'pty' require 'expect' PTY.spawn("gpg -c test") do |r,w,pid| w.sync = true r.expect("Enter passphrase: ", 1) do |e| raise unless e w.puts "secretpassword" end r.expect("Repeat passphrase: ", 1) do |e| raise unless e w.puts "secretpassword" end puts "eof=#{r.eof}" # how to read eventual data # how to expect eof? end system('ls test*') # output when running the program prompt> ruby a.rb eof=false test test.gpg prompt>