我希望我的代码执行以下操作:如果可以在服务器上找到某个文件,我想获取它并将其保存到文本文件中。如果找不到,我想保存到另一个文本文件。
我该怎么做?
这是我的代码:
#!/usr/bin/perl
use Net::TFTP;
my $server = "192.168.1.1";
my $file = "image.bin";
my $tftp = Net::TFTP->new("$server");
$tftp->octet;
$tftp->get("$file","$server-$file");
答案 0 :(得分:0)
我的问题或所需的输出并不清楚。根据我对您的描述的理解,您需要在外部主机上搜索某些文件,如果存在则获取它们,如果不将它们添加到文件中。问题的一种可能方法可能是Net::SFTP::Foreign。在我的代码示例下,我只是搜索目录中的文件,如果我找到了我想要的文件,我将它们添加到一个数组中以便进一步处理。在您的情况下,您可以使用get或其他东西,阅读非常容易触及的模块文档。
代码示例:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Net::SFTP::Foreign;
my %args = ( host => "127.0.0.1",
user => "user",
port => "22", # default 22
# psw => "psw", # uncomment if you are using passwords
key_path => "/home/user/.ssh/id_rsa" ); # comment if you are using passwords
my $sftp = Net::SFTP::Foreign->new(%args);
$sftp->die_on_error("Unable to establish SFTP connection");
my $ls = $sftp->ls('/home/user/myTestDir/TestDir')
or die "unable to retrieve directory: ".$sftp->error;
my @rest;
my @wanted;
for (@$ls) {
next if (substr($_->{filename},0,1) eq "."); # skip ('.' and '..')
if ($_->{filename} eq 'foo.txt'){
push @wanted, $_->{filename};
} else {
push @rest, $_->{filename};
}
}
print Dumper \@wanted, \@rest;
# do your stuff with the files
__END__
$ perl test.pl
$VAR1 = [
'foo.txt'
];
$VAR2 = [
'bar.txt'
];