I need to run a command on the command-line that asks for a user response. In case it helps the command is:
gpg --recipient "Some Name" --encrypt ~/some_file.txt
when you run this, it warns about something then asks:
Use this key anyway? (y/N)
Responding 'y' let's it finish correctly. I have been trying to use the open4 gem but I have not been able to get it to specify the 'y' correctly. Here is what I tried:
Open4::popen4(cmd) do |pid, stdin, stdout, stderr|
stdin.puts "y"
stdin.close
puts "pid : #{ pid }"
puts "stdout : #{ stdout.read.strip }"
puts "stderr : #{ stderr.read.strip }"
end
What am I doing wrong? Is what I am doing even possible?
The Unix way to handle these situations is with expect, which Ruby comes with built-in support for:
gpg
is probably opening the terminal device directly to ask the user the question -- this is a common safety approach to prevent driving a script entirely from files. (See the now-deprecatedgetpass(3)
routine for something similar.)If you don't actually care enough about the warning to read it, you might as well use the
gpg
command line option--yes
: