如果我在其中放入退出代码,脚本不起作用

时间:2016-06-06 10:42:59

标签: linux bash nagios

我的剧本有一部分:

x=`grep -i -o -P '.{0,28}BACKUP TO NASBACKUP stopped.' /var/log/nascad.log`  
if [[ $x == *"BACKUP TO NASBACKUP stopped."* ]]  
    then  
    echo "Backup Stopped!Something Wrong.." "$x"  
    echo -n "" > /var/log/nascad.log  
    exit 2  
else  
    echo "All ok"  
    exit 0  
fi

使用退出代码echo -n "" > /var/log/nascad.log命令不起作用,就好像它没有被执行一样。
没有它一切都有效。

它是一个nagios脚本,所以我需要退出代码。如果我手动启动它,它的工作原理。什么时候从nagios执行它不起作用。

1 个答案:

答案 0 :(得分:0)

我认为这是一个许可问题。就个人而言,当我想尝试使用nagios的自制脚本时,我会手动启动脚本作为nagios用户:

su - nagios -s /bin/bash
./your_script

如果它是权限问题(对于日志文件),则必须将此脚本的所有者更改为nagios用户:

chown nagios /var/log/nascad.log

告诉我,我是否比nagiosxi支持更快(我知道他们可以多久......)

- 编辑 -

我试过这个为我工作的perl脚本。也许您必须根据需要调整正则表达式。

#!/usr/bin/perl
use strict;
use warnings;

my $filename="/var/log/nascad.log";

open(my $fh,"<",$filename);

foreach(<$fh>){
    if ($_ =~ /(.*?BACKUP TO NASBACKUP stopped.*)/i){
        print "Backup stopped! Something wrong... : $1\n";
        open($fh, ">", $filename);
        exit (2);
    }
}

print "All ok!\n";
exit (0);