변경 후 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

관련 정보