簡體   English   中英

rails使用用戶輸入運行shell命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM