我的剧本有一部分:
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执行它不起作用。
答案 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);