2012-06-04 47 views
1

我期望經常創建3個後臺任務,並從我的Rails應用程序執行這些任務的一些shell命令。我正在考慮將delayed_job用於後臺任務,但我不確定如何從rails應用程序安全地執行shell命令,有人能告訴我如何從Rails應用程序執行此操作嗎?來自Rails應用程序的後臺任務和shell命令

傑夫

回答

4

有幾種方法,都是Rubyisms。

system('cmd','arg1',...) 

還是很有Unixy

val = `ls -l` 

後者將執行命令並返回它的輸出入變量val。

+0

我知道system()和back ticks,但這似乎是一個壞主意。我的意思是有什麼Ruby/Rails像http://docs.python.org/library/subprocess.html#module-subprocess? (我的背景是/是py)從像apache這樣的特權進程運行系統命令看起來像是一個安全問題,所以我希望找到與python中的子進程模塊類似或等效的東西。 – JeffC

+0

這是一個潛在的安全漏洞,你只需確保交給系統的任何驗證。我廣泛使用它,但傳遞給系統的任何東西都不會來自用戶輸入,所以它適用於我。這裏有一個相關的問題:http://stackoverflow.com/questions/4650636/forming-sanitary-shell-commands-or-system-calls-in-ruby – RadBrad

+0

太棒了!沒有任何數據來自我的用戶,但我總是關心任何安全漏洞。我會調查這個解決方案,謝謝rad – JeffC

相關問題