ईमेल बैश स्क्रिप्ट के साथ काम नहीं कर रहा है


0

मैं अपने वाइप सिप ट्रंक वाहक पर नजर रखने की कोशिश कर रहा हूं अगर यह अनुपलब्ध हो जाए तो मुझे नीचे स्क्रिप्ट से एक ईमेल मिलता है, स्क्रिप्ट में कमांड ठीक काम कर रही है / tmp / checkpeers में लॉग फाइल बनाएं लेकिन स्क्रिप्ट ईमेल नहीं भेज रही है मैंने कई विकल्प आज़माए हैं जैसा कि वे नीचे स्क्रिप्ट में देखा जा सकता है, मैंने भी परीक्षण किया है मेल डिलीवरी एजेंट सक्षम है और मैंने ईमेल-परीक्षण "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

क्या आप 'मेल -s' का उपयोग करके कमांड लाइन से एक ईमेल भेजने में सक्षम हैं?
टायसन

हां यह मेल के साथ काम करता है -s नो प्रॉब्लम
user313162

स्क्रिप्ट को कैसे चलाया जा रहा है? ध्यान दें कि asteriskलाइन बनाएगी /tmp/checkpeers(जो खाली हो सकती है और -sपरीक्षण में विफल हो जाएगी ), लेकिन आप निकाल रहे हैं और बाद में परीक्षण कर रहे हैं /tmp/checkPeers, जो एक अलग फ़ाइल है, हालांकि mailकमांड लोअर-केस फ़ाइल से इनपुट लेता है।
AFH

भले ही मैं rm -f / tmp / check टिप्पणी करूँ .. यह अभी भी ईमेल नहीं भेजा गया है, और मैं स्क्रिप्ट को मैन्युअल रूप से sh
Monitorip.sh

जवाबों:


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? चूंकि लिनक्स में फाइलें केस-सेंसिटिव होती हैं, इसलिए इनका समान होना जरूरी है। सुनिश्चित करें कि आपकी स्क्रिप्ट में फ़ाइलनाम यहां और अन्य स्थानों पर मेल खाता है।

सौभाग्य।


यह वह बॉस था जिसे आपने इसे बहुत धन्यवाद दिया ...
user313162

0

इसके अलावा @ कुंवारी अवलोकन के लिए, मैं पूरी तरह से अस्थायी फ़ाइलों से बचना चाहिए

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.