更改后运行 bash 脚本

更改后运行 bash 脚本

我在 centos 服务器上运行 FreeBPX,我想在电话分机离线时监控它们。我有一个正在完成这项工作的脚本,并且每 30 分钟在 cron 作业上运行它,但我希望仅在有更改时收到一次电子邮件通知,这样我就不会每 30 分钟收到相同的电子邮件。

#!/bin/bash
email="[email protected]"
/usr/sbin/asterisk -rx 'sip show peers' > /tmp/allExtensions.txt
offlineExtensions="cat /tmp/allExtensions.txt| grep 'UNKNOWN'"
count="cat /tmp/allExtensions.txt | wc -l"
if [ $count -gt 0 ]; then
(
echo "Subject: Offline Extensions"
printf 'Extensions that are currently offline...\n''\n'"${offlineExtensions}"
) | /usr/sbin/sendmail ${email}
fi

我还想排除一些扩展名,例如“203”,因为它们并不重要。的输出

cat /tmp/allExtensions.txt| grep 'UNKNOWN' 
205/205     (Unspecified)     D     Yes     Yes     A     0     UNKNOWN
  1. 我需要一些修改脚本的帮助,以便电子邮件发送一次。例如,cron 将每 30 分钟运行一次,但如果扩展 201 和 202 未知,那么我将收到一封电子邮件。如果 30 分钟后有另一个分机 205 未知,我们将收到电子邮件通知。
  2. 另外,如果可能的话,我想从触发通知中排除一些扩展“203”。

答案1

我能够使用下面的脚本实现预期结果。

#!/bin/sh
email="[email protected]"
/usr/sbin/asterisk -x 'sip show peer 204' | grep -i status | cut -d' ' -f11 >             /tmp/204status1.txt
A=`comm -23 /tmp/204status1.txt /tmp/204status2.txt`
cp /tmp/204status1.txt /tmp/204status2.txt
if [ "$A" == "UNKNOWN" ]; then
(
echo "Subject: System is down - 204"
printf 'System is down...'
) | /usr/sbin/sendmail ${email}
fi

相关内容