SCP文件使用Perl匹配模式

时间:2016-06-30 07:29:56

标签: perl scp

有没有办法使用Perl scp匹配通配符模式的多个文件?

说服务器A有curr目录包含.pdf和.txt文件,我想只将.pdf文件移到/ home / userid下的服务器B 我使用Net :: SCP,但我发现没有正常scp命令中的批量复制,例如。 scp * .pdf userid @ serverB

>cat test.pl
use Net::SCP;
$scp = Net::SCP->new( "serverB", "userid" );
$scp->put("test.pdf") or die $scp->{errstr};

我想更改为$ scp-> put(" * .pdf")或die $ scp-> {errstr};如果我改为* .pdf perl throws error

  

* .pdf:没有这样的文件或目录

我已经创建了无密码登录。有没有办法批量匹配模式文件?

2 个答案:

答案 0 :(得分:2)

使用Net::OpenSSH

mvn install -P resume-at-pre-int-test

或者,如果您在Windows中运行该脚本,Net::SSH::Any提供了相同的界面:

use Net::OpenSSH;
my $ssh = Net::OpenSSH->new('serverB', user => 'userid');
$ssh->scp_put({glob => 1}, '*.pdf', '.') or die $ssh->error;

答案 1 :(得分:1)

*字符是由shell扩展的通配符(不同的shell可能有不同的扩展规则),因此SSH(或SCP)对此一无所知。

此外,SSH没有"集成"支持在目录中列出文件。 如果您要列出文件,您必须通过远程ls *.pdf(通过使用Net::SSH::Perl)或者切换到“丑陋的方式”#34;与Net::SFTP不同的东西,它支持opendir函数。

相关问题