【问题标题】:NodeJS ssh2 Previous Commands PersistingNodeJS ssh2 以前的命令持续存在
【发布时间】:2021-09-28 18:46:48
【问题描述】:

我正在使用带有 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);

在执行下一个命令之前如何让它完全关闭连接?

【问题讨论】:

    标签: node.js express ssh2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 2014-01-21
      • 2014-09-17
      • 2021-01-06
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2020-09-14
      相关资源
      最近更新 更多