[英]rails run shell command with user input
我想從rails app controller運行shell命令。 我的應用代碼是:
cmd = "openssl genrsa -des3 -out testfolder/testkey.key 1024"
system cmd
比shell會問我密碼,所以如果你從終端運行這個命令你可以輸入密碼,但如果我從控制器運行我不能。
出於某些原因,我不想使用rails OPENSSL。
我試圖谷歌,但我沒有結果。
我也試過這樣的事情:
cmd = "openssl genrsa -des3 -out testfolder/testkey.key 1024"
system cmd
system 'echo', '111111Passs'
這不是我的問題的解決方案。
我的問題是:如何將密碼從控制器傳遞給shell? 我怎么能提交這個命令? (模擬按鍵盤上的ENTER鍵)
謝謝
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
您可以嘗試通過參數傳遞passphase(不推薦):
openssl genrsa -des3 -out testfolder/testkey.key -passout pass:SECRET_PASS 1024
更安全的選擇是將密碼短語寫入臨時文件並使用:
openssl genrsa -des3 -out testfolder/testkey.key -passout file:passphrase.txt 1024
從這個SO線程中無可奈何地回答,它有更多的細節和更好的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.