nodejs ssh2 上传下载文件错误(打开通道错误:Error: (SSH) Channel open failure: open failed)
来源:互联网 发布:c语言算法描述举例 编辑:程序博客网 时间:2024/06/06 03:53
由于最近在写一个自动测试的代码,用nodejs写,需要用ssh2模块将本地机器上的文件以及文件夹上传到远程的linux机器上,在百度上面看的相关的例子,但是上面的例子,如果一个连接下载一次然后关闭就不会出错,若同一个连接多次操作就会出现很大的问题。
百度上面百度到的例子如下:
conn.sftp(function(err, sftp){if(err){throw err;}else{sftp.fastGet(remotePath, localPath, function(err, result){conn.end();});}});如果按照百度上面的例子,一个连接只能下载一次,有人会想到将一个连接封装起来,这样有可以多次利用该连接去下载和其他等操作,我也是这样做的,但是封装好了之后,下载了几个文件,就会出现如下的错误:
C:\Users\Administrator\Desktop\2016-10-20\SSH2-UTILS.js:72 throw err; ^ Error: (SSH) Channel open failure: open failed at SSH2Stream.onFailure (C:\Users\Administrator\node_modules\ssh2\lib\client.js:1169:13) at SSH2Stream.g (events.js:180:16) at SSH2Stream.emit (events.js:95:17) at parsePacket (C:\Users\Administrator\node_modules\ssh2\node_modules\ssh2-streams\lib\ssh.js:3599:10) at SSH2Stream._transform (C:\Users\Administrator\node_modules\ssh2\node_modules\ssh2-streams\lib\ssh.js:652:13) at SSH2Stream.Transform._read [as __read] (_stream_transform.js:179:10) at SSH2Stream._read (C:\Users\Administrator\node_modules\ssh2\node_modules\ssh2-streams\lib\ssh.js:236:15) at SSH2Stream.Transform._write (_stream_transform.js:167:12) at doWrite (_stream_writable.js:225:10) at writeOrBuffer (_stream_writable.js:215:5) at SSH2Stream.Writable.write (_stream_writable.js:182:11) at write (_stream_readable.js:601:24)解释:出现这个的原因就是一个连接允许的通道数量是有限的,当我们调用conn.sftp()打开一个通道的时候,要么我们就一直用这个通道,要么我们想要用其他通道的时候,我们需要在合适的位置将conn.sftp()打开的通道关闭,否则一旦打开的通道多了没有关闭就会出现上面的那种错误。conn.exec()、conn.shell()也是同样的道理。
解决方法:我们在下载完一个文件就调用sftp.end()释放该通道,或者在其他地方释放也可,只要注意不要打开太多通道即可。我们可以将上面的例子改为如下:
conn.sftp(function(err, sftp){if(err){throw err;}else{sftp.fastGet(remotePath, localPath, function(err, result){sftp.end();});}});以后遇到这种在国内用得比较少的技术,大家最好还是到必应、谷歌上面去查询吧。
0 0
- nodejs ssh2 上传下载文件错误(打开通道错误:Error: (SSH) Channel open failure: open failed)
- AndroidStudio编译错误处理--Error:Failed to open zip file.
- Error:Failed to open zip file错误的解决方法
- open()打开文件失败对应的各种错误码
- yum 错误TypeError: rpmdb open failed
- mysql错误指令:Failed to open file "file_name" error 2/error 22
- open(打开文件) open与fopen
- 【PB】pb打开pbw时提示Attempt to open datawindow failed错误解决办法
- pb打开pbw时提示Attempt to open datawindow failed错误解决办法
- nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
- 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
- MYSQL启动错误之[ERROR] Failed to open log (file './mysql-bin.000039', errno 2)
- 解决nginx: [error] open() "/usr/local/var/run/nginx.pid" failed错误
- Android Studio更新出现错误:Error:Failed to open zip file解决方法
- Android Studio 更新升级出现错误:Error:Failed to open zip file解决方法
- 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
- 解决错误Error:Failed to open zip file. Gradle's dependency cache may be corrupt
- studio编译错误Error:Failed to open zip file. Gradle's dependency cache may be corrupt
- appium基础操作方法--滑动操作(上滑、下滑、左右滑动)--JAVA篇
- gpnp Tools 使用方法小节
- qsort源代码分析
- 2016腾讯实习生笔试编程题:有趣的数字
- Python特殊语法:filter map reduce lambda
- nodejs ssh2 上传下载文件错误(打开通道错误:Error: (SSH) Channel open failure: open failed)
- 第5章 优化程序性能
- db queue grant and revoke
- 网易云音乐底部播放栏实现思路
- Material Design5.x动画实现解析篇一
- Java并发编程:线程池的使用
- 第7周项目3-负数把正数赶出队列
- java 工厂模式
- 第三方单点登录(SSO——Single Sign On)