rails запускает команду оболочки с пользовательским вводом - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу запустить команду оболочки из контроллера приложения rails.Код моего приложения:

cmd = "openssl genrsa -des3 -out testfolder/testkey.key 1024"
system cmd 

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

Я не хочу использовать рельсы OPENSSL, по некоторым причинам.

Я пытался Google, но у меня нет результата.

Также я пытался что-то вроде этого:

cmd = "openssl genrsa -des3 -out testfolder/testkey.key 1024"
system cmd
system 'echo', '111111Passs'

Это не решение моей проблемы.

Мой вопрос: как передать пароль от контроллера к оболочке?Чем, как я могу подать эту команду?(имитировать нажатие клавиши ENTER на моей клавиатуре)

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете попробовать передать пароль через аргумент (не рекомендуется):

openssl genrsa -des3 -out testfolder/testkey.key -passout pass:SECRET_PASS 1024

Более безопасный вариант - записать фразу-пароль во временный файл и использовать это:

openssl genrsa -des3 -out testfolder/testkey.key -passout file:passphrase.txt 1024

Ответ бесстыдно снят с этой СО темы , в которой гораздо больше подробностей и более подробных объяснений.

0 голосов
/ 22 ноября 2018
require 'pty'
require 'expect'

PTY.spawn("openssl genrsa -des3 -out testfolder/testkey.key 1024") do |reader, writer|
  reader.expect(/Enter pass phrase/)
  writer.puts("<password>")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...