私の電話の内線番号にアクセスできない場合を知らせる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

使用したいのですが、sedbashawkスクリプトは完全に初めてです。

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

関連情報