微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeJS ssh2 以前的命令持续存在

如何解决NodeJS ssh2 以前的命令持续存在

我正在使用带有 express js 的 ssh2 库。客户端向 express api 发送 POST 请求,然后它应该创建一些文件,然后使用 ssh2 将文件一个目录复制到另一个目录,最终将对该文件执行另一个 shell 命令。

但是,我遇到了仅复制副本的问题。发出请求时,文件会在文件名中增加它们的编号,但是 ssh2 继续一次又一次地发送以前的文件

Jul 21 07:13 roi00754.edi
Jul 21 07:13 roi00755.edi
Jul 21 07:13 roi00757.edi
Jul 21 07:13 roi00756.edi
Jul 21 07:13 roi00758.edi
Jul 21 07:13 roi00760.edi
Jul 21 07:13 roi00759.edi
Jul 21 07:13 roi00761.edi


                ssh.on('ready',() => {
                    console.log('Client :: ready');
                    ssh.exec(
                        `
                        cp ${conf.remote_rollcreate_dir_full}${rollcreate_ord_filename} ${remote_edi_ord_dir_full}${edi_ord_filename}\n
                        `,(err,stream) => {
                            if (err) throw err;
                            stream.on('close',(code,signal) => {
                                console.log('Stream :: close :: code: ' + code + ',signal: ' + signal);
                                ssh.end();
                            })
                            stream.on('data',(data) => {
                                console.log('STDOUT: ' + data);
                            }).stderr.on('data',(data) => {
                                console.log('STDERR: ' + data);
                            });
                            stream.end(`exit\n`)
                        }
                    );
                }).connect(ssh_config);

在执行下一个命令之前如何让它完全关闭连接有什么想法吗?

解决方法

解决方案似乎使用 .once('ready' ... 而不是 .on('ready' ...

https://github.com/mscdex/ssh2/issues/717

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。