Електронна пошта не працює зі скриптом bash


0

Я намагаюсь відстежувати наш VoIP-SIP магістральний канал, якщо він стає недоступним, я отримую електронний лист із скрипту нижче, команда в скрипті працює прекрасно, створюйте файл журналу в / 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

Чи можете ви надіслати електронний лист із командного рядка за допомогою 'mail -s'?
Тайсон

Так, це працює з поштою - без проблем
користувач313162

Як виконується сценарій? Зауважте, що asteriskрядок буде створювати /tmp/checkpeers(який може бути порожнім і не матиме -sтесту), але ви видаляєте та пізніше випробовуєте /tmp/checkPeersфайл, який є іншим mailфайлом.
АФХ

навіть якщо я коментую rm -f / tmp / check .. він все одно не надсилається електронною поштою, і я запускаю скрипт вручну sh monitorsip.sh, також сценарій має 755 дозволів
user313162

Відповіді:


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 залежні від регістру, вони повинні бути однаковими. Переконайтеся, що назви файлів відповідають тут і в інших місцях вашого сценарію.

Удачі.


Це був бос, ви отримали це дуже дякую ...
user313162

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.