获取脚本在服务器上执行并使用node.js在客户端上显示脚本输出的最佳方式是什么?
问题描述:
我正在开发一个小型web应用程序,我希望能够让我的用户能够按下按钮并能够在服务器上远程执行脚本。我希望脚本的输出显示在客户端上。获取脚本在服务器上执行并使用node.js在客户端上显示脚本输出的最佳方式是什么?
我只是想了解实现这种功能的最佳方式。是否有任何图书馆/结节让你直接做这样的事情?
可能途径
- Child.process()
答
看一看节点的child_process
库。 Link
我之前使用过.exec
函数,因为它运行一个脚本来完成并捕获输出。这听起来像你正在寻找什么,只是用你的例子替换他们的示例命令。
var exec = require('child_process').exec,
child;
child = exec('cat *.js bad_file | wc -l',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
环绕此调用回调,你会得到回调的响应,然后到客户端,当脚本完成。请注意您通过HTTP请求运行的脚本。像“运行任何命令”这样的开放字符串将是明显的安全问题,长时间运行的脚本将成为HTTP超时的一个问题。你可以实现一个基于WebSockets的解决方案和管道结果(如果你想启动一个进程并保持它运行,并且可能会在稍后与它进行交互,请看.spawn
)。
+0
我会试试这个。是的,我更喜欢websockets的实现。 – cyberbeast
你问是否有HTTP在Node.js中实现的服务器? –
@FelixKling不完全。我希望能够通过按下客户端上的按钮来呼叫服务器上的bash脚本。我正在寻找的是与RPC一致的东西。所以我远程调用一个bash脚本,并在客户端显示它的输出。 – cyberbeast
你是否需要安全地做到这一点,所以脚本不能以恶意的方式混淆你的服务器?因为如果需要虚拟机的话。如果不是,您只需要知道如何运行脚本(取决于脚本的类型),然后将stdio的内容返回给用户。 – jfriend00