Ruby Open3.popen3 имитирует пользовательский ввод

Я пытаюсь запустить скрипт bash (@command), который требует пользовательского ввода, и я пытаюсь передать этот сценарий с помощью следующего кода:

Open3.popen3 (@command) do | stdin, stdout, stderr |
  stdin.write ("у")
  stdout.gets
конец

Вот идея сценария:

exec sudo su -c "некоторая команда" $username

Если кто-то может сказать мне, что я делаю неправильно, или есть какие-либо предложения о том, как реализовать это по-другому, я был бы очень признателен.


Также я могу запустить скрипт так:

@output = `# {@ command}`

В этом случае я вижу содержимое вывода скрипта в консоли, с которой запускаю мое приложение. Если есть какой-либо способ подачи входных данных в это место, это тоже будет работать.

2 ответа

Решение

Получил мое решение здесь: Как исправить зависание popen3 в Ruby?

Open3.popen3 (@command) do | stdin, stdout, stderr |
  stdin.puts "y \ r \ n"

  stdout.each_line {| line | ставит строку}
  stdin.close
конец
out_err, status = Open3.capture2e(@command, :stdin_data => "y\r\n")
print out_err
Другие вопросы по тегам