1
我期望經常創建3個後臺任務,並從我的Rails應用程序執行這些任務的一些shell命令。我正在考慮將delayed_job用於後臺任務,但我不確定如何從rails應用程序安全地執行shell命令,有人能告訴我如何從Rails應用程序執行此操作嗎?來自Rails應用程序的後臺任務和shell命令
傑夫
我期望經常創建3個後臺任務,並從我的Rails應用程序執行這些任務的一些shell命令。我正在考慮將delayed_job用於後臺任務,但我不確定如何從rails應用程序安全地執行shell命令,有人能告訴我如何從Rails應用程序執行此操作嗎?來自Rails應用程序的後臺任務和shell命令
傑夫
有幾種方法,都是Rubyisms。
system('cmd','arg1',...)
還是很有Unixy
val = `ls -l`
後者將執行命令並返回它的輸出入變量val。
我知道system()和back ticks,但這似乎是一個壞主意。我的意思是有什麼Ruby/Rails像http://docs.python.org/library/subprocess.html#module-subprocess? (我的背景是/是py)從像apache這樣的特權進程運行系統命令看起來像是一個安全問題,所以我希望找到與python中的子進程模塊類似或等效的東西。 – JeffC
這是一個潛在的安全漏洞,你只需確保交給系統的任何驗證。我廣泛使用它,但傳遞給系統的任何東西都不會來自用戶輸入,所以它適用於我。這裏有一個相關的問題:http://stackoverflow.com/questions/4650636/forming-sanitary-shell-commands-or-system-calls-in-ruby – RadBrad
太棒了!沒有任何數據來自我的用戶,但我總是關心任何安全漏洞。我會調查這個解決方案,謝謝rad – JeffC