我正在使用net :: ssh2编写一个perl脚本来建立到远程服务器的SSH连接.
(我在 Windows上工作)
(我在 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();
当我执行此脚本时,连接成功,文件被正确发送但执行没有(完全)执行.我的意思是,我认为命令被发送执行但立即终止或根本没有发送,我不确定.
我想要的是脚本等待命令完成之后再断开所有内容(只是因为有时候,我需要得到命令执行的结果)
有谁知道如何解决这个问题?