Я пытаюсь отслеживать наш VoIP-провайдер, если он становится недоступным. Я получаю письмо из сценария ниже, команда в сценарии работает нормально, создайте файл журнала в /tmp /checkpeers, но сценарий не отправляет электронную почту, я перепробовал много вариантов как видно из приведенного ниже сценария, я также проверил, включен ли агент доставки почты, и я разослал несколько тестовых электронных писем, используя "test" me@me.com, это работает, может кто-нибудь помочь с этим.

#!/bin/sh

# Check for Offline SIP Peers
#peername=vitel-inbound2/kdc_gatine
rm -f /tmp/checkPeers
#/usr/sbin/asterisk -rx 'sip show peers' | grep UNKNOWN >/tmp/checkPeers
#asterisk -rx "sip show peers" | grep vitel-inbound2/kdc_gatine | grep -v OK

asterisk -rx "sip show peers" | grep vitel-inbound2/kdc_gatine | grep -v OK >/tmp/checkpeers

if [ -s "/tmp/checkPeers" ]; then
mail -s "Vitelity Inbound SIP Connection OffLine please Check" me@me.com < /tmp/checkpeers
#[EMAIL="me@me.com"]me@me.com[/EMAIL] </tmp/checkpeers

#SUBJECT="Vitelity Inbound SIP Connection OffLine please Check"
#EMAILID="me@me.com" </tmp/checkPeers
#$SUBJECT
#$EMAILID

fi

2 ответа2

1

Я предполагаю, что файл, который вы создаете, не соответствует файлу, который вы тестируете. Это те строки, на которые я ссылаюсь.

asterisk -rx "sip show peers" | grep vitel-inbound2/kdc_gatine | grep -v OK >/tmp/checkpeers
if [ -s "/tmp/checkPeers" ]; then

в первом вы создаете файл как /tmp/checkpeers , а во втором вы тестируете против /tmp/checkPeers . Обратите внимание на разницу в строчных буквах p и P? Поскольку файлы в Linux чувствительны к регистру, они должны быть одинаковыми. Убедитесь, что имена файлов совпадают здесь и в других местах вашего скрипта.

Удачи.

0

В дополнение к наблюдениям @ virtex, я бы вообще избегал временных файлов

data=$(asterisk -rx "sip show peers" | grep vitel-inbound2/kdc_gatine | grep -v OK)

if [ -n "$data" ]; then
    subject="Vitelity Inbound SIP Connection OffLine please Check"
    recipients="me@me.com"

    echo "$data" | mail -s "$subject" "$recipients"
fi

Если вы согласны с временными файлами, тогда DRY и используйте переменную для хранения имени файла:

tmp=$(mktemp -t checkPeers.XXXX)
trap "rm -f $tmp" EXIT            # remove when script exits

asterisk -rx "sip show peers" | grep vitel-inbound2/kdc_gatine | grep -v OK >"$tmp"

if [ -s "$tmp" ]; then
    mail -s "Vitelity Inbound SIP Connection OffLine please Check" me@me.com <"$tmp"
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .