2012-05-29 14 views
5

में उपयोगकर्ता लॉगिन प्रमाणीकरण के बाद एक स्क्रिप्ट कैसे चलाएं मेरे पास एक स्क्रिप्ट है जिसे मैं उपयोगकर्ता लॉग-इन प्रमाणीकरण के बाद चलाने के लिए चाहता हूं। इसे पूरा करने के लिए, मैंने /etc/rc5.d/S##rc.local फ़ाइल में स्क्रिप्ट नाम जोड़ा। लेकिन बाद में मुझे यह पता चला कि, rc.local फ़ाइल में जो भी जोड़ा गया है, वह सिस्टम प्रमाणीकरण के बाद सिस्टम के बूट समय में निष्पादित हो जाता है। क्या कोई मुझे बता सकता है कि उपयोगकर्ता लॉगिन प्रमाणीकरण के बाद स्क्रिप्ट कैसे चलाएं?लिनक्स

+1

क्या आप सुविधा या सुरक्षा के लिए ऐसा कर रहे हैं? अर्थात। क्या आप बस अपना लॉगिन वातावरण स्थापित करना चाहते हैं (उपनाम जोड़ें, चर सेट करें, आदि), या क्या आप चाहते हैं कि प्रत्येक स्क्रिप्ट के बाद उपयोगकर्ताओं को इसे हटाने की अनुमति दिए बिना आपकी स्क्रिप्ट चलाना चाहें? सुरक्षा उद्देश्य के लिए – lanzz

+0

। वास्तव में जब भी सिस्टम सिस्टम में लॉग-इन करता है तो मैं स्क्रिप्ट को चलाने के लिए चाहता हूं। – user976754

+2

यदि नीचे दिए गए किसी भी उत्तर में आपकी सहायता की गई है, तो कृपया उन्हें स्वीकार्य के रूप में चिह्नित करें। धन्यवाद। – woohoo

उत्तर

3

अपने /etc/pam.d/login को यह जोड़ने का प्रयास करें:

session optional pam_exec.so /bin/bash /path/to/your/script.sh 

ही वर्तमान उपयोगकर्ता वास्तव में एक प्रशासक (जो भी करने के लिए व्यवस्थापक होने के लिए अपने मानदंड हैं अनुसार) है आपके पास अपनी स्क्रिप्ट में जांच करने के लिए की आवश्यकता होगी।

+0

हाय Lanzz, मैंने इसे /etc/pam.d/login स्क्रिप्ट में जोड़ा। लेकिन मेरी स्क्रिप्ट को निकालने में असमर्थ ... – user976754

+0

'pam_exec' स्पष्ट रूप से उस टर्मिनल पर अपना आउटपुट प्रदर्शित नहीं करता है जहां उपयोगकर्ता लॉग ऑन है। क्या आपको अपनी स्क्रिप्ट में कुछ भी प्रदर्शित करने की ज़रूरत है, या सिर्फ पृष्ठभूमि में कुछ करने के लिए (उदा। अधिसूचना भेजें)? आप एक लॉग फ़ाइल जोड़ सकते हैं जहां आपकी स्क्रिप्ट का आउटपुट लॉग हो जाएगा: 'session वैकल्पिक pam_exec.so लॉग =/पथ/से/लॉगफाइल/बिन/बैश/पथ/से/your/script.sh' – lanzz

+0

मुझे यह लाइन मिल गई है '/ etc/pam.d/login'। मुझे लगता है कि जब मैं माचिन के लिए ssh करता हूं तो अनम मुद्रित होता है: 'session वैकल्पिक pam_exec.so टाइप = open_session stdout/bin/uname -snrvm' – Nope

13

वैकल्पिक रूप से, आप अपनी स्क्रिप्ट /etc/profile.d फ़ोल्डर में जोड़ सकते हैं।

इस here और here के बारे में अधिक पढ़ना।

असल में, आपको अपनी स्क्रिप्ट एक्सटेंशन .sh देना चाहिए क्योंकि इन सभी फ़ाइलों को उपयोगकर्ता लॉग ऑन करने के बाद लूप में निष्पादित किया जाता है।

+0

यह वास्तव में काम करता है। धन्यवाद :) – user976754

+1

@ user976754: मुझे खुशी है कि इससे आपकी मदद मिली। कृपया इस प्रश्न के लिए मेरे उत्तर को आपके स्वीकृत उत्तर के रूप में चिह्नित करें :) – woohoo

+0

ऐसा लगता है कि आपको /etc/profile.d के अंतर्गत फ़ाइलों को बनाने के लिए रूट अनुमतियां रखने की आवश्यकता है, जब उपयोगकर्ता लॉग इन करता है तो फाइल को निष्पादित किया जाता है? चूंकि फाइल रूट के स्वामित्व में होगी। – ams