簡體   English   中英

從Node.js服務器執行cmd.exe

[英]Execute cmd.exe from Nodejs server

環境:運行Vagrant和VirtualBox的Windows主機已在Vagrant框上運行,已安裝帶有Vagrant NodeJS的Ubuntu 64 Vagrant Box

您好,我想知道是否可以從Vagrant Box中運行“ cmd.exe”嗎? 例如,在Vagrant Box上運行Nodejs http服務器,然后在Windows主機上瀏覽至localhost:8888(我現在看到的是Hello World),然后單擊“ run cmd.exe”按鈕,該按鈕將在Windows主機? child_process( link )在我的場景中可用嗎?

如果可能,代碼是否應放在localexec.js文件中?

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);

我發現的其他答案確實可以回答這個問題,但是我知道只有在NodeJs安裝在Windows主機上並從Windows主機運行時,才可以通過NodeJs進行,而不是從外部VirtualBox NodeJS服務器運行嗎? 謝謝

這可以通過使用RPC (遠程過程調用)來完成,您必須在Windows環境中具有服務器端,然后才能使用此軟件包: dnode ,它允許您偵聽接收函數,並且這些函數可以調用命令到cmd並從中獲取stdout,然后在您的boxjs裝箱的vm中進行,您無法從系統內部進行通信,因為VM是來自dnode docs的沙箱:

//Server-Side
var dnode = require('dnode');
var server = dnode({
    transform : function (s, cb) {
        cb(s.replace(/[aeiou]{2,}/, 'oo').toUpperCase())
    }
});
server.listen(5004);

//Client-Side
var dnode = require('dnode');

var d = dnode.connect(5004);
d.on('remote', function (remote) {
    remote.transform('beep', function (s) {
        console.log('beep => ' + s);
        d.end();
    });
});

ps:dnode允許您執行所需的任何代碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM