2013-11-28 34 views
1

这是我的第一个bash脚本。如果有报警,报警继电器状态检查并发邮件一次

我有报警继电器,我想用cron每2分钟检查一次继电器状态,如果它是“1”,那么只发送一次电子邮件警告。如果继电器为“1”,则必须手动重置继电器,并且不要每隔2分钟发送一次电子邮件。

它的工作原理,但有什么我可以改善或做更好的方式吗?

#!/bin/bash  
lockfile=/tmp/MLP_alarm.lock 
alarm_state=$(/home/talo/bin/MLP_alarm_relay_state.py) 

if [ $alarm_state = 0 -a -f $lockfile ] 
then 
    rm $lockfile 
    echo "Alarm reset and lockfile removed" 
    exit 1 
elif [ $alarm_state = 0 -a ! -f $lockfile ] 
then 
    echo "Everything OK!" 
    exit 1 
elif [ $alarm_state = 1 -a ! -f $lockfile ] 
then 
    touch $lockfile 
    echo “Alarm detected” | mail -s “ALARM !!!” [email protected] 
    echo "email sent" 
    exit 1 
elif [ $alarm_state = 1 -a -f $lockfile ] 
then 
    echo "Email sent earlier" 
    exit 1 
else 
    echo "Something went wrong!!!" 
    exit 1 
fi 

回答

1
  1. [ $alarm_state = 0 -a -f $lockfile ]
    是perfectlty不错,但它正式劝编写为
    [ "$alarm_state" = "0" ] && [ -f "$lockfile" ]
    因为-a选项可以在某些情况下,模棱两可。

  2. 试着使用双引号将所有变量(以'$'开头的所有变量)封装起来。它会为你节省一些头痛的问题(比如:带空格的文件名等)。

其余的看起来很完美,这里没有任何东西需要优化。 :-)