我正在开发一个为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页面中使用此名称。
我应该在代码中更改什么才能获得要执行的命令生成的返回值?
谢谢你 (对不起,我的英文不好)答案 0 :(得分:3)
将一个回调函数传递给exec以获取命令输出,如下所示:
var command = exec(req.query.cmd, function(err, stdout, stderr) {
res.send(stdout);
});