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

发布于 2024-10-24 23:52:25 字数 301 浏览 2 评论 0原文

我必须运行一些用户输入的 shell 命令。我找到了一种看起来安全的方法: system *%W(ls #{file}) [此处]

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

I have to run some shell commands where the user gives the input. I found one way which seemed secure: system *%W(ls #{file}) [here].

I need to get the output of that command, so I cant just use system. Is there a way to sanitize the command for backticks `` or for %x[]?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

刘备忘录 2024-10-31 23:52:25

您需要 IO::popen 而不是系统。您仍然可以在没有 shell 的情况下传递字符串数组来调用命令,并且可以从生成的 IO 对象中读取

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

You want IO::popen instead of system. You can still pass an array of strings to invoke the command without a shell, and you can read from the resulting IO object.

If you want to read stderr too, then use the open3 module instead of IO.

素手挽清风 2024-10-31 23:52:25

您正在运行哪些 Ruby 无法支持的 shell 命令?如果要列出文件,请使用 Dir

What kind of shell commands are you running that Ruby cannot support? If you are listing files, use Dir

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文