如果有警报,报警继电器状态检查并发送一次电子邮件

时间:2013-11-28 13:54:23

标签: bash

这是我的第一个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 !!!” me@email.com
   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 个答案:

答案 0 :(得分:1)

  1. [ $alarm_state = 0 -a -f $lockfile ]
    是完美的还可以,但正式建议将其写为
    [ "$alarm_state" = "0" ] && [ -f "$lockfile" ]
    因为在某些情况下-a选项可能不明确。

  2. 尝试用双引号将所有变量(以'$'开头的所有变量)括起来。它将为您节省一些麻烦(例如:带空格的文件名等)。

  3. 其余的看起来很完美,这里没有什么可以优化的。 : - )