लॉगआउट या डिस्कनेक्ट पर चलने के लिए बल कमांड?


13

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


क्या आप रिमोट-मशीन पर कमांड को निष्पादित करना चाहते हैं या जिस पर आपने कनेक्शन को इनिशियलाइज़ किया है?
xx4h

जवाबों:


20

ऐसा करने का सबसे अच्छा तरीका पैम का उपयोग करना होगा ।

में /etc/pam.dआप कई फ़ाइलों होगा, उनमें से एक बुलाया जाएगा sshd। यदि आप केवल ssh को प्रभावित करना चाहते हैं, और अन्य लॉगिन (जैसे GUI, या वास्तविक TTY) को नहीं चाहते हैं, तो आप यह फ़ाइल चाहते हैं।
यदि आप सभी लॉगिन को प्रभावित करना चाहते हैं, तो आप एक 'सामान्य' फ़ाइल चाहते हैं। इस अन्य 'सामान्य' फ़ाइल का नाम डिस्ट्रो द्वारा भिन्न होता है, लेकिन आप इसे तब तक ट्रैक कर सकते हैं जब तक कि आप फ़ाइल में दिए गए स्टेटमेंट includeऔर substackस्टेटमेंट्स का पालन sshdनहीं कर सकते।

एक बार जब आप उस फ़ाइल की पहचान कर लेते हैं /etc/pam.dजिसका आप उपयोग करना चाहते हैं, तो sessionअनुभाग में निम्न के रूप में एक पंक्ति जोड़ें :

session     optional    pam_exec.so quiet /etc/pam_session.sh

इसका परिणाम यह होगा कि /etc/pam_session.shहर बार कोई व्यक्ति लॉग इन करे और लॉग आउट करे (चाहे कृपापूर्वक या असावधानी से)।

अब आपको बस बनाने की जरूरत है /etc/pam_session.sh। नीचे एक उदाहरण है जिसका उपयोग आप हर बार किसी को लॉग आउट करने के लिए कुछ करने के लिए कर सकते हैं:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  something
fi

( chmod a+xस्क्रिप्ट को न भूलें )

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