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



我的脚本中有一部分:

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 执行时,它不起作用。

我认为这是一个权限问题。就个人而言,当我想尝试使用 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... : $1n";
        open($fh, ">", $filename);
        exit (2);
    }
}
print "All ok!n";
exit (0);

相关内容

  • 没有找到相关文章