2012-06-04 43 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

相关问题