CentosサーバーでFreeBPXを実行していて、オフラインのときに電話の内線番号を監視したいと思います。タスクを実行するスクリプトがあり、30分ごとにcronジョブで実行しますが、変更があったときに電子メール通知を1回だけ受信し、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
- 電子メールが一度だけ送信されるようにスクリプトを変更するのに役立ちます。たとえば、cronは30分ごとに実行されますが、拡張子201と202がわからない場合は電子メールが届きます。 30分後に別の未知の内線番号205がある場合は、電子メール通知が届きます。
- また、可能であれば、いくつかの拡張子「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