首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Perl的SCP文件匹配模式

使用Perl的SCP文件匹配模式
EN

Stack Overflow用户
提问于 2016-06-30 07:29:55
回答 2查看 766关注 0票数 2

有没有一种方法可以使用Perl实现与通配符模式匹配的scp多个文件?

假设服务器A有包含.pdf和.txt文件的curr目录,我只想将.pdf文件移到/home/userid (我使用了Net::SCP )下,但是我看到没有普通scp命令中的批量复制。scp *.pdf userid@serverB

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

我希望更改为$scp->put(" *.pdf ")或死$scp->{errstr};如果更改为*.pdf perl引发错误。

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

我已经创建了无密码登录。是否有办法对匹配的模式文件进行批量复制?

EN

回答 2

Stack Overflow用户

发布于 2016-06-30 10:50:08

使用Net::OpenSSH

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

或者,如果在Windows中运行该脚本,Net::SSH::Any提供了一个相同的接口:

代码语言:javascript
复制
use Net::SSH::Any;
my $ssh = Net::SSH::Any->new('serverB', user => 'userid');
$ssh->scp_put({glob => 1}, '*.pdf', '.') or die $ssh->error;
票数 2
EN

Stack Overflow用户

发布于 2016-06-30 09:07:25

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

此外,SSH对目录中的文件列表没有“集成”支持。如果您想列出这些文件,您将不得不采用“丑陋的方式”,执行远程ls *.pdf (通过使用Net::SSH::Perl),或者切换到类似于支持opendir函数的Net::SFTP之类的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38116585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档