gpt4 book ai didi

perl - 更高 ping 网络上的 Net::SSH2

转载 作者:行者123 更新时间:2023-12-02 14:38:53 27 4
gpt4 key购买 nike

似乎从 <$chan> 读取给出空列表,它主要发生在延迟较高的网络上的主机上。是否有更强大的与远程主机交互的方式?

use Net::SSH2;

# my $ssh = Net::SSH2->new();
# ...

my $chan = $ssh->channel() or die "no channel\n";
$chan->blocking(1); # even worse with $chan->blocking(0);
$chan->shell();

print $chan "ps -ef\n";
print <$chan>;

编辑:

使用 Net::SSH::Any 时出错,

Can't call method "exec" on an undefined value at lib/Net/SSH/Any/Backend/Net_SSH2.pm line 133.


sub _capture {
my ($any, $opts, $cmd) = @_;
my $ssh2 = $any->{be_ssh2} or return;
my $channel = $ssh2->channel;
my ($out_fh, $err_fh) = __parse_fh_opts($any, $opts, $channel) or return;
$out_fh and die 'Internal error: $out_fh is not undef';

# vvvvvvvvvvvvvv
$channel->exec($cmd); # <--- LINE 133
# ^^^^^^^^^^^^^^

(__io3($any, $ssh2, $channel, $opts->{stdin_data}, undef, $err_fh || \*STDERR))[0];
}

最佳答案

使用Net::SSH::Any !

几天前,我发布了 0.04 版,修复了我们讨论的两个问题:

  • 未经检查的对 channel 的调用
  • Net::SSH2 上的超时支持后端。它仍然不完美,因为 OpenSSH 和 libssh2 都不支持向远程进程发送信号以终止它,因此,模块只是关闭 stdio 流并希望远程程序在下次尝试写入时最终会收到 SIGPIPE .
  • 关于perl - 更高 ping 网络上的 Net::SSH2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919469/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com