javascript - NodeJs 套接字连接问题

标签 javascript linux node.js ubuntu

我正在尝试连接到远程计算机上运行的进程。我已经使用 ssh2 连接到删除机器。现在我正在尝试连接到机器中运行的进程。进程名称为dd_servicesc

c.exec('OmneBabble dd_servicesc',function(){}

我使用上面的代码命令连接到进程。在连接上我想执行一系列连接。但当前的问题是,如果我再次使用 c.exec,下一个命令将在进程之外执行,因此返回权限被拒绝。为了更好地理解,请查看下面

  OmneBabble dd_servicesc
  >0 1 om_get_user_info 31003 1 MACLEAN1-11365

这里初始命令是OmneBabble dd_servicesc,其中需要执行0 1 om_get_user_info 31003 1 MACLEAN1-11365。请指出我可以引用的任何链接,以找到此问题的解决方案。

问候,

麦克莱恩

Update



function ssh()
{
var Connection = require('ssh2');

var c = new Connection();
c.on('connect', function() {
  console.log('Connection :: connect');
});

c.on('ready', function() {
  console.log('Connection :: ready');
c.exec('OmneBabble dd_servicesc', function(err, stream) {
    if (err) throw err;
    stream.on('data', function(data, extended) {
      console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ')
                  + data);
    });
    stream.on('end', function() {
      console.log('Stream :: EOF');
    });
    stream.on('close', function() {
      console.log('Stream :: close');
    });
    stream.on('exit', function(code, signal) {
      console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal);
      c.end();
    });
  });
c.exec('0 1 om_get_user_info 31003 1 MACLEAN1-11365', function(err, stream) {
    if (err) throw err;
    stream.on('data', function(data, extended) {
      console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ')
                  + data);
    });
    stream.on('end', function() {
      console.log('Stream :: EOF');
    });
    stream.on('close', function() {
      console.log('Stream :: close');
    });
    stream.on('exit', function(code, signal) {
      console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal);
      c.end();
    });
  });
});

c.on('error', function(err) {
  console.log('Connection :: error :: ' + err);
});
c.on('end', function() {
  console.log('Connection :: end');
});
c.on('close', function(had_error) {
  console.log('Connection :: close');
});
c.connect({
  host: '192.168.20.204',
  port: 22,
  username: 'oaa',
  password: 'marigold'
});
}
exports.ssh = ssh;
<小时/>

更新:此处 OmneBabble dd_services 与套接字 ie> dd_services 建立连接。

之后,我们将使用 0 1 om_get_user_info 31003 1 MACLEAN1-11365 向套接字发布请求

Socket 然后会将请求发布到其所有客户端进程。最后,接受请求的客户端进程将响应输出。所以我无法使用子进程将父进程的输出映射到子进程。

最佳答案

不确定您想要如何连接到进程,但如果进程本身是通过 node 启动的,您可以使用 child_process.spawn 启动它们,您可以在其中返回一个对象,并可以设置 stdoutstderrstdin,以及向进程发送信号。

编辑:

查看附加的代码,您似乎想通过标准输入将第二个命令发送到进程,而不是执行另一个命令。您也许可以将第二个命令作为初始执行程序通过管道传输到主进程中:

c.exec('echo "0 1 om_get_user_info 31003 1 MACLEAN1-11365" | OmneBabble dd_servicesc', function...

关于javascript - NodeJs 套接字连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20187555/

相关文章:

javascript - AWS Lambda [Node.js 4.3] - 奇怪的堆栈跟踪

javascript - 如何将 Firebase Cloud Functions 与 promises 和 forEach 一起使用?

javascript - 将 onclick 事件添加到 html 选择选项

javascript - 如何让我的网站使用谷歌地图使用鼠标滚轮事件进行平移而不是缩放?

linux - sshuttle 连接错误 : packet_write_wait: Connection to <server> port 22: Broken pipe (archlinux)

c++ - Win32_PerfRawData_PerfDisk_PhysicalDisk 在 Linux 上是否等效?

javascript - 通过查找 id-javascript 更改 href

javascript - 为什么我的全局变量在 JSFiddle 上被覆盖了?

linux - grep:小星号(*)什么时候应该匹配自身?

javascript - socket.io 与 socket.io-redis : get all socket object in a room