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
- 이메일이 한 번만 전송되도록 스크립트를 수정하는 데 도움이 필요합니다. 예를 들어 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