/etc/cron.daily/foo: रूट के बजाय किसी विशेष उपयोगकर्ता को ईमेल भेजें?


13

मैं CentOS 5.5 चला रहा हूं।

हमारे पास कई cronjobs /etc/cron.daily/ में संग्रहीत हैं। हम चाहते हैं कि इनमें से कुछ क्रोनॉजर्स के लिए ईमेल किसी विशेष ईमेल पते पर जाए, जबकि बाकी ईमेल /etc/cron.daily/ में डिफ़ॉल्ट ईमेल पते (रूट @ लोकलहोस्ट) पर जाना चाहिए।

/Etc/cron.daily/ में Cronjobs / etc / crontab फ़ाइल से चलाए जाते हैं। / etc / crontab एक 'MAILTO' फ़ील्ड निर्दिष्ट करता है। क्या मैं अपने /etc/cron.daily/foo cronjob में MAILTO सेट करके इसे ओवरराइड कर सकता हूं?

इससे निपटने का सबसे अच्छा तरीका क्या है?


CentOS 6.5 (cronie) उपयोगकर्ताओं के लिए ध्यान दें: /etc/crontabचूक को निर्दिष्ट नहीं करता है।
एडम मोन्सन

जवाबों:


13

सेटिंग MAILTO=user@example.orgमें /etc/cron.daily/fooकाम नहीं करता है। स्क्रिप्ट आउटपुट को user@example.org पर नहीं भेजा जाता है।

Http://www.unixgeeks.org/security/newbie/unix/cron-1.html पेज भी एक सरल उपाय बताता है:

फ़ाइल में /etc/cron.daily/fooअब निम्नलिखित शामिल हैं:

#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" stefanl@example.org

यह 'stefanl@example.org' को उस विषय के साथ एक ईमेल भेजेगा जो स्क्रिप्ट के पूर्ण पथ के समान है (उदाहरण के लिए /etc/cron.daily/foo)।

यहाँ Unixgeeks.org इस बारे में क्या कहता है:

क्रोन से आउटपुट

जैसा कि मैंने पहले कहा है, क्रॉन से आउटपुट प्रक्रिया के मालिक को मेल किया जाता है, या MAILTO चर में निर्दिष्ट व्यक्ति, लेकिन क्या होगा यदि आप ऐसा नहीं चाहते हैं? यदि आप आउटपुट को किसी और को मेल करना चाहते हैं, तो आप आउटपुट को कमांड मेल पर पाइप कर सकते हैं। जैसे

cmd | मेल -s "मेल का विषय" उपयोगकर्ता

कभी-कभी, मैं केवल एक क्रोनजॉब से त्रुटियों को प्राप्त करना चाहता हूं, न कि स्टडआउट, इसलिए मैं इस चाल का उपयोग करता हूं। पहली नज़र में वाक्यविन्यास गलत लग सकता है, लेकिन बाकी का आश्वासन दिया यह काम करता है। निम्नलिखित क्रोनजॉब STDOUT को / dev / null को भेज देगा, और फिर पाइपलाइन के माध्यम से STDERR को संभाल लेगा।

doit 2>&1 >/dev/null | mailx -s "$0" stefanl@example.org

एक ही बात है, लेकिन syslog को भेजें:

doit 2>&1 >/dev/null | /usr/bin/logger -t $ME

फाइल और ईमेल के लिए Cronjob stderr के लिए सर्वरफॉल्ट पर मेरा जवाब भी देखें


6

एक अधिक सुरुचिपूर्ण समाधान /etc/cron.dसीधे उपयोग करना होगा । अपनी स्क्रिप्ट को इसमें रखने के बजाय /etc/cron.dailyइसे कहीं रख दें /usr/local/sbin/myscript.shऔर फिर फ़ाइल /etc/cron.d/myscriptको इस तरह बनाएँ :

MAILTO=root,whomever@example.org
# run myscript.sh at 4:11 every day
11 4 * * * root /usr/local/sbin/myscript.sh

यह आपको नौकरी मिलने पर बहुत अधिक नियंत्रण देता है; उदाहरण के लिए केवल कुछ कार्यदिवसों में crontab(5), अधिक जानकारी के लिए आदमी को देखें।


0

मान लें कि आपके पास इस मशीन पर SA पहुंच है, तो आप एक नया उपयोगकर्ता खाता बना सकते हैं, इस खाते के कार्यों को क्रोन कार्यों में जोड़ सकते हैं। इस उपयोगकर्ता के लिए मेल तब इस खाते के होम फ़ोल्डर में एक .forward फ़ाइल का उपयोग करके अग्रेषित किया जा सकता है। यदि क्रोन कार्यों के लिए निजीकरण की आवश्यकता होती है, तो आपको इस उपयोगकर्ता के लिए परमिट सेट करना पड़ सकता है।

क्या यह या स्टेफन का जवाब सबसे अच्छा वास्तव में इस बात पर निर्भर करता है कि आप इसे स्थापित करने में कितना झंझट चाहते हैं और क्या आप चाहते हैं कि त्रुटि संदेश रूट ईमेल पर जाएं या लोगों को जो सामान्य रूप से दैनिक आउटपुट की निगरानी करते हैं।

सौभाग्य

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