私はボタン付きのページを提供する単純なノードサーバーを持っています。このボタンをクリックすると、リモートホスト上でコマンドを実行する必要があります。コマンドが終了すると、出力は関数の応答に渡され、htmlに表示されます。NodeJSのリモートホストでのプロセスの生成
現在、これはサーバコードです:
app.use(logger("combined"));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.get('/index.html', function (req, res) {
res.sendFile(__dirname + "/" + "index.html");
})
app.post('/connect', function (req, res) {
var spawn = require('cross-spawn-async');
var mpiProc = spawn('ssh','[email protected]','"ls"', { stdio: ['pipe','pipe',2,'pipe'] });
var grid = "...8.1..........435............7.8........1...2..3....6......75..34........2..6..";
str = "";
mpiProc.stdout.on('data', function(data) {
console.log(data);
str = data.toString();
res.write('data: ' + JSON.stringify({ msg : str }) + '\n\n');
// Output
});
mpiProc.on('close', function(code) {
res.end(str);
// Script exit code
});
mpiProc.on('error', function(code) {
res.end('stderr: ' + code);
// Script exit code
});
})
require('http').createServer(app).listen(3000, function(){
console.log('Listening on 3000');
});
次の呼び出しは、リモートホスト上で「1!」コマンドを実行しようとすると見ることができるように:
var mpiProc = spawn('ssh','[email protected]','"ls"', { stdio: ['pipe','pipe',2,'pipe'] });
しかし、これはしていません何かを返すと、サーバから直接端末から実行されている間に、ディレクトリの内容のリストを返します。
var mpiProc = spawn('ls', { stdio: ['pipe','pipe',2,'pipe'] });
、私が期待したもの、サーバー上のディレクトリの内容のリストを返す:コマンドは私がこれをやってみました菌糸をこのように動作するかどうかをテストするには。 コマンドを実行し、コマンドの結果をサーバーに格納するために、リモートホストへのパイプを作成するにはどうすればよいですか?