OS X में लॉगिन / लॉगआउट पर स्क्रिप्ट कैसे चलाएं?


10

मैं एक कस्टम रेंडर फ़ार्म मैनेजर बनाने के साथ इधर-उधर जा रहा हूँ, और मैं अपने आप ही OS X मशीनों को रेंडर फ़ार्म में जोड़ना चाहता हूँ जब वे उपयोग में नहीं होते हैं।

क्या किसी उपयोगकर्ता द्वारा लॉग आउट किए जाने के बाद स्क्रिप्ट को ट्रिगर करने का कोई तरीका है, तब रोकें जब कोई उपयोगकर्ता लॉग इन किया हो?

जवाबों:


10

OS X में लॉग इन / लॉगआउट पर स्क्रिप्ट चलाने के कई तरीके हैं , कुछ और हाल ही में हैं और केवल 10.5 और इसके बाद के संस्करण पर लागू होते हैं, कुछ को घटाया नहीं जाता है, लेकिन सबसे तेज़ एक को जोड़ना होगा Login Hook

सबसे पहले, वह स्क्रिप्ट बनाएं जिसे आप चलाना चाहते हैं। एक टर्मिनल खोलें और दर्ज करें:

touch ~/script.sh
open -e !$

यह एक टेक्स्ट एडिटर खोलेगा। निम्न सामग्री के साथ, स्क्रिप्ट दर्ज करें:

#!/bin/sh
# insert your script here

फ़ाइल सहेजें। अपने टर्मिनल में, चलाएं:

chmod +x ~/script.sh

यह फ़ाइल को निष्पादन योग्य बना देगा। अब, इसे हुक के रूप में जोड़ें:

sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/script.sh 

Logout Hookप्रतिपक्ष भी है:

sudo defaults write com.apple.loginwindow LogoutHook /usr/local/bin/script2.sh

मैंने इसे ओएस एक्स 10.6 पर परीक्षण किया है, और इसे 10.8 तक भी काम करना चाहिए । ध्यान रखें कि स्क्रिप्ट के रूप में चलता है rootऔर लॉगिन और लॉगआउट के लिए क्रमशः केवल एक हुक है।

उस सब को पूर्ववत् करने के लिए, दर्ज करें

sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook

ध्यान दें कि तैनाती या किसी भी चीज़ के लिए इस विधि की अनुशंसा नहीं की जाती है, लेकिन यदि आप केवल इसका उपयोग कर रहे हैं जैसे कि आपका प्रश्न कहा गया है, तो कोई समस्या नहीं होनी चाहिए।


yosemite के लिए काम नहीं करता है
davidcondrey

5

लॉन्च हुक के पक्ष में 10.4 में लॉगिन हुक निकाले गए। लॉगिन पर स्क्रिप्ट चलाने के लिए, इस तरह से एक प्लस्ट को बचाएं ~/Library/LaunchAgents/test.plist। यदि आप नहीं चलते हैं तो भी यह अगले लॉगिन पर भरा हुआ है launchctl load ~/Library/LaunchAgents/test.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
        <string>say</string>
        <string>test</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

अधिक जानकारी के लिए, देखें man launchd.plistऔर इस ब्लॉग पोस्ट


लिंक किए गए ब्लॉग पोस्ट के अनुसार, यह आपके द्वारा लॉग इन करने पर पहली बार लोड को लोड करेगा और सिस्टम के पुनरारंभ होने तक इसे लोड रखेगा। आप हर लॉगिन पर स्क्रिप्ट चलाने के लिए लॉन्च का उपयोग कैसे करते हैं? या लॉगआउट पर?
21

-1

इन हुक के लिए 10.10 में काम करने के लिए आपको यह करना होगा:

  1. /etc/ttysफाइल खोलें : फाइंडर में, गो मेन्यू से फोल्डर में जाएं, टाइप करें /etc/, फिर गो पर क्लिक करें।

  2. परिणामी विंडो में, ttysफ़ाइल को अपने पसंदीदा पाठ संपादक (जैसे TextEdit) में खोलें ।

  3. एक पंक्ति के लिए देखो जो पढ़ता है:

    console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

  4. इस पंक्ति को संपादित करें ताकि यह निम्नानुसार पढ़े (इस पंक्ति में कोई विराम नहीं हैं):

    console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

    यानी, दूसरी स्क्रिप्ट से पहले (जहां उपयोगकर्ता लॉग करता है, उस स्क्रिप्ट को पूरा पथ जहां आप निष्पादित करना चाहते हैं )।-LoginHook /path/to/script/path/to/script"

  5. फ़ाइल सहेजें।

सुनिश्चित करें कि इस फ़ाइल को संपादित करने के लिए आप जिस पाठ संपादक का उपयोग करते हैं, वह ऊपर की रेखा को एक से अधिक पंक्ति में नहीं तोड़ता है।


या यहाँ पूर्ण निर्देश का पालन करें:

http://support.apple.com/en-ca/HT2420


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