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

Bash 报警继电器状态检查,如果有报警,发送电子邮件一次,bash,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 -

这是我的第一个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
  • [$alarm\u state=0-a-f$lockfile]

    perfectlty可以,但官方建议将其写为
    [“$alarm\u state”=“0”]&&[-f“$lockfile”]

    因为-a选项在某些情况下可能不明确

  • 试着养成习惯,用双引号将所有变量(以“$”开头的所有变量)括起来。这将为您省去一些麻烦(例如:文件名带有空格等等)

  • 对于其余部分,它看起来很完美,这里没有任何东西需要优化。:-)

  • [$alarm\u state=0-a-f$lockfile]

    perfectlty可以,但官方建议将其写为
    [“$alarm\u state”=“0”]&&[-f“$lockfile”]

    因为-a选项在某些情况下可能不明确

  • 试着养成习惯,用双引号将所有变量(以“$”开头的所有变量)括起来。这将为您省去一些麻烦(例如:文件名带有空格等等)

  • 对于其余部分,它看起来很完美,这里没有任何东西需要优化。:-)