如何获得命令的返回?

时间:2013-08-30 03:42:01

标签: javascript jquery ajax node.js express

我正在开发一个为Linux发送命令的WebApp。 为此,我在客户端上使用Javascript / jQuery,在服务器上使用Node.js。 我的代码是这样的:

客户端

$("#myLink").click(function() {
    $.get('http://myHost:myPort', {cmd: "rhythmbox-client --print-playing"});
});

服务器端(commands.js)

var exec = require('child_process').exec;
var express = require('express');
var app = express();

app.get('/commands', function(req, res) {
    var command = exec(req.query.cmd);
});

app.listen(3000);

这通常可以正常工作和执行命令。 我需要的是获得此命令生成的返回,例如,如果我在终端中运行命令“rhythmbox-client --print-playing”,它将返回当前正在播放的歌曲的名称。 我想在我的应用程序的HTML页面中使用此名称。

我应该在代码中更改什么才能获得要执行的命令生成的返回值?

谢谢你 (对不起,我的英文不好)

1 个答案:

答案 0 :(得分:3)

将一个回调函数传递给exec以获取命令输出,如下所示:

var command = exec(req.query.cmd, function(err, stdout, stderr) {
    res.send(stdout);
});