如何清理shell命令并在Ruby中获取输出?

时间:2011-03-20 12:58:11

标签: ruby shell sanitize

我必须在用户提供输入的地方运行一些shell命令。我找到了一种看似安全的方法:system *%W(ls #{file}) [here]

我需要获取该命令的输出,所以我不能使用system。有没有办法清理反引号``%x[]的命令?

2 个答案:

答案 0 :(得分:3)

您希望IO::popen代替system。您仍然可以传递一个字符串数组来调用没有shell的命令,并且可以从生成的IO对象中read

如果您也想读取stderr,请使用open3模块而不是IO。

答案 1 :(得分:0)

你运行什么样的shell命令,Ruby不支持?如果您要列出文件,请使用Dir