nagios集成的net-sftp-foreign错误处理

时间:2014-08-05 14:58:56

标签: perl sftp nagios

我是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被动检查...

谢谢你的帮助..

亲切的问候。

马里奥

1 个答案:

答案 0 :(得分:0)

看起来检查文档成功获取的一种方法是这样的:

$sftp->get("$file", "$local/$file") or die "get failed:" $sftp->error;