我的脚本中有一部分:
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);