加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[Perl] [net :: ssh2]如何在执行远程命令时保持ssh连接

发布时间:2020-12-16 06:14:44 所属栏目:大数据 来源:网络整理
导读:我正在使用net :: ssh2编写一个perl脚本来建立到远程服务器的SSH连接. (我在 Windows上工作) 我选择了Net :: SSH2,因为我必须在同一个脚本中建立一些SFTP连接. 现在,我的sftp连接工作得很好.问题是当我尝试执行“长时间”命令时.我的意思是执行可能需要超过3
我正在使用net :: ssh2编写一个perl脚本来建立到远程服务器的SSH连接.
(我在 Windows上工作)

我选择了Net :: SSH2,因为我必须在同一个脚本中建立一些SFTP连接.

现在,我的sftp连接工作得很好.问题是当我尝试执行“长时间”命令时.我的意思是执行可能需要超过30秒的命令.

$ssh2 = Net::SSH2->new();
    $ssh2->connect('HOST') or die;
    if($ssh2->auth(username=>'USER',password=>'PSWD'))
    {
        $sftp = Net::SFTP::Foreign->new(ssh2=>$ssh2,backend=>'Net_SSH2');
        $sftp->put('local_path','remote_path');
        $channel=$ssh2->channel();
    ##
        $channel->shell('BCP_COMMAND_OR_OTHER_PERL_SCRIPT');
    # OR (I tried both,both failed :( )
        $channel->exec('BCP_COMMAND_OR_OTHER_PERL_SCRIPT');
    ##
        $channel->wait_closed();
        $channel->close();
        print "End of command";
        $sftp_disconnect();
    }
    $ssh2->disconnect();

当我执行此脚本时,连接成功,文件被正确发送但执行没有(完全)执行.我的意思是,我认为命令被发送执行但立即终止或根本没有发送,我不确定.

我想要的是脚本等待命令完成之后再断开所有内容(只是因为有时候,我需要得到命令执行的结果)

有谁知道如何解决这个问题?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读