Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Node JS在第三方CLI模式下执行多个命令_Node.js_Shell_Ssh - Fatal编程技术网

Node.js 使用Node JS在第三方CLI模式下执行多个命令

Node.js 使用Node JS在第三方CLI模式下执行多个命令,node.js,shell,ssh,Node.js,Shell,Ssh,我想在一个序列中执行5个命令并记录其输出。第一个命令XXXcli ip_address(这将连接到第三方CLI模式),下一个命令将执行脚本,下一个命令将记录输出等。但我的问题是,当我通过node.js执行SSH并在SSH会话中生成shell时,当我执行第一个命令时,我在控制台上看不到任何输出。会话创建了一个shell,一旦shell进入第三方CLI,我就无法启动下一个命令或记录第一个命令的输出。请帮助我。我被这件事困扰了很长时间 更新: 我的代码: session.on('exec', func

我想在一个序列中执行5个命令并记录其输出。第一个命令XXXcli ip_address(这将连接到第三方CLI模式),下一个命令将执行脚本,下一个命令将记录输出等。但我的问题是,当我通过node.js执行SSH并在SSH会话中生成shell时,当我执行第一个命令时,我在控制台上看不到任何输出。会话创建了一个shell,一旦shell进入第三方CLI,我就无法启动下一个命令或记录第一个命令的输出。请帮助我。我被这件事困扰了很长时间

更新:

我的代码:

session.on('exec', function (accept, reject, info) {
                console.log('Client wants to execute: ' + inspect(info.command));

                var stream = accept();

                     var cp = spawn('XXXCLI 10.21.254.12', {shell: true});

                     stream.stdin.pipe(cp.stdin);

                     cp.stdout.pipe(stream.stdout);

                sleep(6000);
                     cp.stderr.pipe(stream.stderr);

                     cp.on('exit', function (code, signal) {
                     stream.exit(signal || code);
                     }).on('end', function (code, signal) {
                     stream.close();

                     });


            });
当我在命令提示符中手动键入第一个命令“XXXCLI ip_address”并按enter键时,我将获得一个输出“Connected to CLI…”。一旦我成功连接,我需要执行第二个命令,即“Lmc sample”,该命令将加载主配置,并将输出为“Message sent…”,第三个命令将执行一个脚本,输出为“Message sent..”。这是我在cmd提示符中手动输入这些命令并执行时发生的情况

发生的情况是,一旦我在cmd中手动执行我的第一个命令,即“XXXCLI 10.21.254.12”,我们实际执行命令的路径,即(C:\users\CLI>)将不可见。发生这种情况是因为现在它连接到了上面提到的ip(10.21.254.12)。只有在连接到这个ip之后,我才能执行我的其他命令。例如加载主配置的命令,执行脚本的cmd等等

所以我想执行我的第一个命令,在变量中获取它的流,并在第一个命令创建的流中执行其余的命令
谢谢

我使用Node.js中的子进程修复了这个问题,并将命令直接写入流中。当我用Java做同样的操作时,它不起作用,但在Node.js中起作用了