【发布时间】:2014-09-12 15:19:29
【问题描述】:
我正在尝试使用 Node.js 编写远程 shell。 这是我目前得到的:
客户
var net = require('net');
var client = net.connect({port: 1234}, function(){
process.stdin.pipe(client);
client.pipe(process.stdout);
});
服务器
var net = require('net'),
spawn = require('child_process').spawn;
var server = net.createServer(function(socket){
var sh = spawn('/bin/sh');
sh.stdout.pipe(socket);
sh.stderr.pipe(socket);
socket.pipe(sh.stdin);
});
server.listen(1234);
简单的命令可以很好地工作,但是当我启动 emacs 或 nano 时却不行,因为没有发送控制序列。 我想让它的行为有点像 ssh。 这样的事情可能吗?也许使用 process.stdin.setRawMode(true) ?
谢谢
【问题讨论】:
-
如果您希望 emacs 弹出一个窗口,您可能需要设置 DISPLAY 环境变量。
-
真正的问题是如何发送控制序列,如^C、^X、KeyUp、KeyDown。我试过 setRawMode(true),它似乎不起作用
标签: javascript node.js sockets remote-access tty