从基于Web的界面运行shell命令的最佳方法是什么?

Gar*_*thr 8 ruby python django shell ruby-on-rails

想象一个Web应用程序,它允许登录用户只需按一下按钮就可以在Web服务器上运行shell命令.通过一些标准库os工具,这在大多数语言中相对简单.

但是如果该命令长时间运行,则不希望您的UI挂起.同样,使用某种后台进程或将要执行的命令放到消息队列上(并且可能将输出和状态保存到某处以供以后使用)相对容易处理.只需快速返回保存,我们将运行并回复您.

我想要做的是显示上述Web UI的输出触发shell命令,因为它发生.所以垂直滚动文本就像在终端中运行一样.

我对如何处理这个问题有一个模糊的想法,可能将输出流式传输到websocket并简单地将输出打印到屏幕上.

我想问的是:

他们的任何插件,库或应用程序是否已经这样做了.我可以使用或阅读的来源.理想情况下是开源python/django或ruby/rails工具,但其他堆栈也很有趣.

Gar*_*thr 1

因此,我尝试用代码回答我自己的问题,因为我找不到任何符合要求的内容。希望它对遇到同样问题的人有用。

Redbeard 0X0A 为我指明了大致方向,我能够使用 popen 获得一个标准的 ruby​​ 脚本来完成我想要的操作。将其扩展到使用 EventMachine (因为它提供了一种编写 websocket 服务器的便捷方法)并使用它的内置 popen 方法解决了我的问题。

更多详细信息请参见http://morethanseven.net/2010/09/09/Script-running-web-interface-with-websockets.html和代码http://github.com/garethr/bolt/