我是Perl的新手。我编写了一个非常简单的脚本,可以从sftp复制和删除文件。
但是脚本应该返回某种输出,以便将它与nagios集成...使用nsca或其他东西。
该脚本在solaris 10上运行。
这是脚本:
#!/usr/bin/perl -w
use strict;
use warnings;
use Net::SFTP::Foreign;
use POSIX qw(strftime);
my $datestring =strftime "%d-%m-%Y", localtime;
my $host="sftp.mariog.com";
my $username="user";
my $local="/mnt/mariog";
my $file="BookingReport_Daily_$datestring.xls";
print "$file \n";
my $sftp = Net::SFTP::Foreign->new($host,
user => $username,
stderr_discard => 1,
autodie => 1,
);
$sftp->die_on_error("unable to establish SFTP Connection");
$sftp->get("$file", "$local/$file");
$sftp->remove($file);
$sftp->disconnect();
如何处理sftp上不存在该文件的事实?也许还没到达。有一个每日文件上传但在不同的时间。该脚本每4小时由cron运行,所以大多数时候它都找不到要传输的文件......
我在哪里可以获得传输的输出代码成功与否?所以我可以通过nsca将它传递给nagios被动检查...
谢谢你的帮助..
亲切的问候。马里奥
答案 0 :(得分:0)
看起来检查文档成功获取的一种方法是这样的:
$sftp->get("$file", "$local/$file") or die "get failed:" $sftp->error;