免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1663 | 回复: 0
打印 上一主题 下一主题

rex SSH2.pm 中出现一个Bug [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-07 21:26 |只看该作者 |倒序浏览
屏幕上无限打印:
  1. Use of uninitialized value $wr in numeric lt (<) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 416.
  2. Use of uninitialized value $wr in addition (+) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 417.
  3. Use of uninitialized value $wr in substr at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 418.
  4. Use of uninitialized value $wr in numeric lt (<) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 416.
  5. Use of uninitialized value $wr in addition (+) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 417.
  6. Use of uninitialized value $wr in substr at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 418.
  7. Use of uninitialized value $wr in numeric lt (<) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 416.
  8. Use of uninitialized value $wr in addition (+) at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 417.
  9. Use of uninitialized value $wr in substr at /usr/lib64/perl5/vendor_perl/Net/SSH2.pm line 418.
复制代码
看了看代码:
  1.     390 sub scp_put {
  2.     391     my ($self, $path, $remote) = @_;
  3.     392     $remote = basename $path if not defined $remote;
  4.     393
  5.     394     my $file = ref $path ? $path : IO::File->new($path, O_RDONLY);
  6.     395     $self->error($!, $!), return unless $file;
  7.     396     my @stat = $file->stat;
  8.     397     $self->error($!, $!), return unless @stat;
  9.     398
  10.     399     my $mode = $stat[2] & 0777;  # mask off extras such as S_IFREG
  11.     400     my $chan = $self->_scp_put($remote, $mode, @stat[7, 8, 9]);
  12.     401     return unless $chan;
  13.     402     $chan->blocking(1);
  14.     403
  15.     404     # read and transmit blocks until we're finished
  16.     405     for (my ($size, $count) = ($stat[7]); $size > 0; $size -= $count) {
  17.     406       my $buf;
  18.     407       my $block = ($size > 8192) ? 8192 : $size;
  19.     408       $count = $file->sysread($buf, $block);
  20.     409       $self->error($!, $!), return unless defined $count;
  21.     410       $self->error(0, "want $block, have $count"), return
  22.     411        unless $count == $block;
  23.     412       die 'sysread mismatch' unless length $buf == $count;
  24.     413       my $wrote = 0;
  25.     414       while ($wrote >= 0 && $wrote < $count) {
  26.     415         my $wr = $chan->write($buf);
  27.     416         last if $wr < 0;
  28.     417         $wrote += $wr;
  29.     418         $buf = substr $buf, $wr;
  30.     419       }
  31.     420       $self->error(0, "error writing $count bytes to channel"), return
  32.     421        unless $wrote == $count;
  33.     422     }  
  34.     423     
  35.     424     # send/receive SCP acknowledgement
  36.     425     $chan->write("\0");
  37.     426     my $eof;
  38.     427     $chan->read($eof, 1);
  39.     428     return 1;
  40.     429 }
复制代码
看了一下,应该是在远程拷贝文件的时候,往通道中写数据“my $wr = $chan->write($buf);”却没有得到返回值,看样子应该是“write()”函数的问题。
write是  "$self"的对象的一个函数,而self对象就搞不清楚是什么玩意了。

谁牛逼帮忙看看啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP