环境: 运行Vagrant和VirtualBox的Windows主机 安装了Vagrant的Ubuntu 64 Vagrant Box NodeJS在Vagrant框上运行
您好,我想知道是否可以在Vagrant Box中运行'cmd.exe'?例如。在Vagrant Box上运行Nodejs http服务器,然后浏览到Windows主机上的localhost:8888(我现在看到我的Hello world),然后单击一个按钮,例如'run cmd.exe'在Windows主机上打开cmd.exe? 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);
我发现其他答案可以回答它是可能的,但据我所知,当它安装在Windows主机上并且从Windows主机运行而不是从外部VirtualBox NodeJS服务器运行时,它才可能来自NodeJs? 感谢
答案 0 :(得分:1)
这可以通过使用RPC(远程过程调用)来完成,你必须在Windows环境中有一个服务器端然后你可以使用这个包:dnode,它允许你听接收函数,使用这些函数你可以调用命令到cmd并从你的nodejs盒装vm中获取stdout,你不能从系统内部进行通信,因为虚拟机是沙箱,来自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允许您执行任何类型的代码:)