我想在一个序列中执行5个命令,并记录它的output.For示例。第一个命令XXXcli ip_address (这将将我连接到第三方CLI模式),下一个命令将执行一个脚本,下一个命令将记录输出etc.But --我的问题是,当我通过node.js执行SSH并在ssh会话中生成一个shell时,当我执行第一个命令时,我看不到控制台上的任何输出。会话创建一个shell,一旦shell进入第三方CLI,我就不可能启动下一个命令或记录第一个command.Kindly的输出。我被这个困了很长时间
更新:
我的守则:
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键时,我将得到一个“连接到CLI.”的输出.我成功地获得了这个连接,我需要执行我的第二个命令,即"Lmc样例“,它将加载主配置,我将得到输出为"Message sent.”,第三条命令将执行一个脚本,当我在cmd提示符中手动输入这些命令并执行时,.Once将以“MessageSend..This”的形式得到输出。
一旦我在cmd中手动执行第一个命令即“XXXCLI10.21.254.12”,我们实际执行命令即( C:\users\CLI>)的路径将是不可见的。这是因为现在它与上面提到的ip (10.21.254.12) .And连接到这个ip之后,我才能够执行我的其他命令,即加载主配置的命令、执行脚本的cmd命令等等。
因此,我想执行我的第一个命令,并在一个变量中获取它的流,并在第一个命令创建的流中执行其余的命令,谢谢!
发布于 2017-08-08 05:20:41
我在Node.js中使用子进程修复了这个问题,并直接在流中编写命令。当我对Java做同样的事情时,它不起作用,但在Node.js中却起了作用。
https://stackoverflow.com/questions/42064206
复制相似问题