स्क्रीन और मेल दोनों को आउटपुट कैसे भेजें?


9

मैं एक स्क्रिप्ट के अंत में एक ईमेल भेजने के लिए निम्नलिखित का उपयोग करता हूं।

echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com".

हालाँकि, मैं स्क्रीन पर भी यही संदेश देना चाहता हूं। उसी कथन में मैं कैसे करूँ?

जवाबों:


19

सबसे आसान तरीका शायद teeसंदेश को stderr के साथ-साथ stdout करना है:

echo "Script finished on date" | tee /dev/stderr \
    | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com"

teeस्टडआउट सहित कई गंतव्यों के लिए इसके इनपुट को डुप्लिकेट करता है। डिफ़ॉल्ट रूप से, stderr और stdout दोनों स्क्रीन पर जाते हैं; आप Mailस्क्रीन पर जा रहे स्टडर को छोड़ते हुए stdout को रीडायरेक्ट कर रहे हैं।

यदि आपको किसी कारणवश इसकी आवश्यकता पड़ती है, तो आप इसे एक उपधारा (या कई अन्य तरीकों) का उपयोग करके पुनः निर्देशित कर सकते हैं:

(
    echo "Script finished on date" | tee /dev/stderr \
        | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com"
) 2>&1

3
वैकल्पिक रूप से, एक फ़ाइल को टी करें और फिर फ़ाइल को मेल करें ... बहुत उपयोगी है यदि आउटपुट बहुत बड़ा है और आप इसे भेजना चाहते हैं, जैसे, बेस 64-एन्कोडेड gzipped MIME अटैचमेंट के रूप में। या बस एक फ़ाइल (जैसे exec &> $LOGFILE) के लिए सभी उत्पादन को पुनर्निर्देशित करें और फिर stdout को पुनर्स्थापित करें, फ़ाइल को stdout में लाएँ और इसे मेल करें।
कैस

धन्यवाद क्रेग। चूंकि इस मामले में मेरा पाठ बहुत छोटा है, इसलिए मैं अपमानजनक प्रतिक्रिया से जाऊंगा।
सैमी

हम्म .. यह काम किया लेकिन मुझे एहसास हुआ कि मुझे अपनी समस्या वर्णन में और अधिक जोड़ने की आवश्यकता है। मैंने अपनी स्क्रिप्ट की अंतिम पंक्ति के रूप में इस समाधान का उपयोग किया। मैंने अपनी स्क्रिप्ट के सभी आउटपुट को "nohup.out" के रूप में इकट्ठा करने के लिए अपनी स्क्रिप्ट पर "nohup" कमांड का उपयोग किया और मुझे जो कुछ भी दिखाई दे रहा है वह सिर्फ एक पंक्ति है "xxxxx पर स्क्रिप्ट समाप्त"। इस समाधान का उपयोग करने से पहले, मुझे सभी स्क्रिप्ट आउटपुट ठीक मिले। क्या कोई तरीका है कि मैं यह सब मिटाने के बजाय इस अंतिम एक पंक्ति के आउटपुट को कैसे जोड़ सकता हूं?
सैमी

1
"टी-ए" का उपयोग करके समस्या को हल किया।
सैमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.