내 전화 내선 번호에 액세스할 수 없는 경우를 알려주는 Bash 스크립트는 무엇입니까?

내 전화 내선 번호에 액세스할 수 없는 경우를 알려주는 Bash 스크립트는 무엇입니까?

내 전화 내선 번호에 액세스할 수 없을 때 이메일을 통해 알려주는 bash를 작성하는 방법이 있나요?

출력은 다음에서 비롯됩니다./var/log/asterisk/full

[Nov 15 13:25:16] NOTICE[7884] chan_sip.c: Peer '7778' is now UNREACHABLE!  Last qualify: 17
[Nov 15 13:25:17] NOTICE[7884] chan_sip.c: Peer '7169' is now UNREACHABLE!  Last qualify: 17
[Nov 15 13:25:17] NOTICE[7884] chan_sip.c: Peer '7176' is now UNREACHABLE!  Last qualify: 18
[Nov 15 13:25:18] NOTICE[7884] chan_sip.c: Peer '7771' is now UNREACHABLE!  Last qualify: 14
[Nov 15 13:25:18] NOTICE[7884] chan_sip.c: Peer '7606' is now UNREACHABLE!  Last qualify: 17
[Nov 15 13:25:18] NOTICE[7884] chan_sip.c: Peer '7773' is now UNREACHABLE!  Last qualify: 14
[Nov 15 13:25:19] NOTICE[7884] chan_sip.c: Peer '7125' is now UNREACHABLE!  Last qualify: 15
[Nov 15 13:25:20] NOTICE[7884] chan_sip.c: Peer '7772' is now UNREACHABLE!  Last qualify: 15
[Nov 15 13:25:22] NOTICE[7884] chan_sip.c: Peer '7605' is now UNREACHABLE!  Last qualify: 16
[Nov 15 13:25:22] NOTICE[7884] chan_sip.c: Peer '7183' is now UNREACHABLE!  Last qualify: 18
[Nov 15 13:25:29] NOTICE[7884] chan_sip.c: Peer '7601' is now UNREACHABLE!  Last qualify: 24
[Nov 15 13:25:30] NOTICE[7884] chan_sip.c: Peer '7776' is now UNREACHABLE!  Last qualify: 47
[Nov 15 13:25:32] NOTICE[7884] chan_sip.c: Peer '7604' is now UNREACHABLE!  Last qualify: 25
[Nov 15 13:25:34] NOTICE[7884] chan_sip.c: Peer '7774' is now UNREACHABLE!  Last qualify: 46
[Nov 15 13:25:38] NOTICE[7884] chan_sip.c: Peer '7770' is now UNREACHABLE!  Last qualify: 41
[Nov 15 13:25:41] NOTICE[7884] chan_sip.c: Peer '7775' is now UNREACHABLE!  Last qualify: 42

보시다시피 사람들이 전화를 걸 수 없다고 불평하기 전까지 저는 전화가 끊어진 줄 몰랐습니다.

지금까지 내가 한 일:

#!/bin/bash

email="[email protected]"

offlineExtensions=$(cat /var/log/asterisk/full | grep -i unreachable)


if [ "$offlineExtensions" ]
then
printf 'Extensions that are currently offline...\n''\n'"$offlineExtensions" | mail -s 'Extensions OFFLINE' "$email"
fi

사용하고 싶지만 sedbash awk스크립팅이 완전히 처음입니다.

Asterisk log file확장 프로그램에 액세스할 수 없는지 확인하기 위해 이 스크립트를 지속적으로 확인하면 좋을 것입니다.

답변1

로그를 읽을 필요가 없습니다. asterisk어떤 확장 프로그램이 문제인지 물어보세요.

asterisk -rx 'sip show peers like ^[0-9]{4}$' | awk 'NR>1 && !/ OK /'

"정상"이 아닌 4자리 내선번호가 신고됩니다.

답변2

one-liner다음은 원하는 것을 수행하는 간단한 것입니다 .

tail -F /var/log/asterisk/full | while read -r line; do if [[ "$line" == *NREACHABLE* ]]; then mail -s "$line" [email protected] </dev/null ; fi; done

screen또는 내에서 이 명령을 실행하세요 tmux.

또는:

#!/bin/bash

    while read -r line
     do if [[ "$line" == *NREACHABLE* ]]; then 
         mail -s "$line" [email protected] </dev/null 
        fi 
     done < <(tail -F /var/log/asterisk/full)

답변3

아래 스크립트는 귀하의 요구 사항을 충족할 수 있습니다. 저는 sendmail이메일로 알림을 보내곤 했어요 . 이 스크립트를 작업으로 실행하도록 설정하면 cron연결할 수 없는 확장이 있는지 확인하고 연결할 수 없는 확장이 0보다 큰 경우 이메일 알림을 보냅니다.

#!/bin/bash

email="[email protected]"
/usr/sbin/asterisk -rx 'sip show peers' > /tmp/allExtensions.txt
offlineExtensions=`cat /tmp/allExtensions.txt| grep 'UNREACHABLE'`
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

관련 정보