लॉगआउट पर स्क्रिप्ट / ऐप चलाएं


13

हम सभी जानते हैं कि मैक ओएस एक्स में बहुत उपयोगी लॉगिन आइटम कार्यक्षमता है जो आपको अन्य चीजों के साथ, लॉग इन करते समय चलाने के लिए एप्लिकेशन / स्क्रिप्ट सेट करती है।

मैं स्क्रिप्ट / ऐप की एक सूची को सेटअप करने का एक तरीका ढूंढ रहा हूं जो मुझे लॉग आउट करते समय चलता है । एक "लॉगआउट आइटम" सूची, यदि आप करेंगे।
मूल रूप से, मैं अपने लिए कुछ छोटी सफाई स्क्रिप्ट लिखना चाहता हूं जो लॉग आउट या बंद होने पर स्वचालित रूप से चलेंगी।

इसलिए, जब मैं लॉग आउट करता हूं, तो मुझे स्क्रिप्ट (या, आदर्श रूप से, उनकी सूची) के लिए एक रास्ता मिल रहा है। लॉग आउट स्क्रिप्ट के समाप्त होने का इंतजार करेगा (ठीक उसी तरह जैसे लॉगआउट आपके लिए प्रतीक्षा करता है कि कोई ऐप अनुरोध करता है तो सेव को क्लिक करें)।

क्या मैक ओएस एक्स से लॉग आउट करने पर स्वचालित रूप से (ए) स्क्रिप्ट (ओं) को ट्रिगर करने का एक तरीका है?


जवाबों:


7

लॉगआउट हुक 10.4 में पदावनत किए गए थे , लेकिन वे अभी भी 10.9 के रूप में काम करते हैं।

sudo defaults write com.apple.loginwindow LogoutHook ~/.logouthook
echo $'#!/bin/bash\nsay a' > ~/.logouthook
chmod +x ~/.logouthook

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

डिफॉल्ट्स कमांड /var /root/Library/Preferences/com.apple.loginwindow.plist को संशोधित करता है। /Library/Preferences/com.apple.loginwindow.plist में LogoutHook कुंजी जोड़ने से काम नहीं चलता।

यदि लॉगआउट हुक को चलने में काफी समय लगता है, तो लॉगआउट हुक समाप्त होने तक एक ग्रे स्क्रीन दिखाई जाती है। ऐसा लगता है कि लॉगआउट हुक को समाप्त करने के लिए मजबूर होने के बाद कोई समय सीमा नहीं है।

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//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>bash</string>
    <string>-c</string>
    <string>trap 'echo a>/Users/username/Desktop/a;say a' EXIT;while :;do sleep 10;done</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

हम्म, उनमें से किसी ने भी मेरे लिए काम नहीं किया है। मुझे यह स्क्रिप्ट मिली है , जो काम करती है अगर मैं इसे चलाता हूं sh(यह उस .txt फ़ाइल बनाता है)। मैंने स्क्रिप्ट को /etc/rc.shutdown.local के रूप में सहेजा है, और defaultsजैसा आपने कहा मैंने उसे जोड़ दिया । न तो फाइल पहले से थी। क्या मुझसे कुछ ग़लत हो रहा है? धन्यवाद!
नाथन ग्रीनस्टीन

मुझे यकीन नहीं है कि मैं कुछ गलत कर रहा हूं या नहीं। मैं 10.6.8 पर हूं और LogoutHook काम नहीं कर रहा है। अगर आप इस स्क्रीनशॉट पर एक नज़र डाल सकते हैं और अगर कुछ गलत दिखता है तो मुझे बताएं, मैं इसकी सराहना करता हूँ। धन्यवाद!
नाथन ग्रीनस्टीन

1
आह! उस आखिरी ने 10.6.8 पर चाल चली। धन्यवाद! एक नोट हालांकि: यह सिंह के साथ काम नहीं करता है :(
नाथन ग्रीनस्टीन

2
मेरे माउंटेन लायन (10.8.2) मशीन पर दोनों विधियां ठीक काम करती हैं, यहां तक ​​कि शट डाउन या रिबूट करने पर भी। ध्यान दें कि लॉगिनहूक / लॉगआउटहूक हुक रूट उपयोगकर्ता के संदर्भ में चलते हैं , और यह कि वे सिंगल, सिस्टम-वाइड हुक हैं, और यह कि लॉगिन हुक तुल्यकालिक रूप से चलता है - प्रति उपयोगकर्ता लॉन्च एजेंटों की तुलना में बहुत पहले; इसी तरह, लॉगआउट हुक प्रति उपयोगकर्ता लॉन्च एजेंट की तुलना में पहले चलता है जो EXIT-trap विधि का उपयोग करता है। ऐसे मामले हैं जहां केवल हुक काम करते हैं; उदाहरण के लिए, यदि आप मैक के स्टार्टअप साउंड को दबाने के लिए शटडाउन पर ध्वनि को म्यूट करना चाहते हैं, तो केवल लॉगआउटहोक मज़बूती से काम करता है।
22

1

वास्तव में एक तरीका है:

  1. "स्क्रिप्ट एडिटर" ऐप खोलें
  2. पेस्ट करें

do shell script "PUT YOUR START SCRIPT PATH HERE"

on quit
    do shell script "PUT YOUR STOP SCRIPT PATH HERE"
    continue quit
end quit
  1. फ़ाइल> सहेजें, एप्लिकेशन चुनें और रन हैंडलर और सहेजें के बाद खुले रहें
  2. सिस्टम प्राथमिकताएं> उपयोगकर्ता और समूह> आइटम लॉग इन करें टैब> बटन
  3. एप्लिकेशन जोड़ें और इसे छिपे के रूप में चिह्नित करें

इसे डॉक से छिपाने के लिए:

  1. एप्लिकेशन पर राइट क्लिक करें और शो पैकेज सामग्री चुनें
  2. जानकारी खोलें। जोड़ें और जोड़ें

<key>NSUIElement</key>
<string>1</string>

इसे प्रेम करें। मेरी जरूरतों के लिए सरल और पर्याप्त। और पदावनत नहीं किया गया।
इवान एक्स

0

स्क्रिप्ट टाइमर इसके लिए एक अच्छा विकल्प है। यह लॉगआउट, लॉगिन और बहुत कुछ पर चल सकता है। मैं एक सरल और आसान समाधान के लिए इसके साथ जाऊंगा। इसमें एक साधारण GUI है:

ट्रिगर करने की क्रिया

स्क्रिप्ट टाइमर के बारे में आपको दो बातें ध्यान देने की जरूरत है। एक, यह मुफ्त नहीं है । इसकी कीमत $ 12 है, लेकिन मुझे लगता है कि यह इसके लायक है। दो, यह शेर के साथ पूरी तरह से संगत नहीं है, लेकिन जैसे ही उन्होंने इसे संगत किया है, उन्होंने मुफ्त अपडेट का वादा किया है।


1
यह अब हटा दिया गया है
कीर्तिकुमार ए।

0

आप अपने स्क्रिप्ट से प्लैटिपस जैसी किसी चीज़ का उपयोग करके मैक एप्लिकेशन भी बना सकते हैं और फिर इसे किसी अन्य एप्लिकेशन की तरह लॉगिन आइटम में जोड़ सकते हैं।


0

जब उपयोगकर्ता लॉग आउट करता है तो पावर मैनेजर स्क्रिप्ट चला सकता है। यह एक वाणिज्यिक उत्पाद है और यह नवीनतम macOS का समर्थन करता है।

पावर मैनेजर लॉग आउट शेड्यूल असिस्टेंट टास्क पर एक स्क्रिप्ट चलाते हैं

ईवेंट एडिटर का उपयोग करने से पहले आवश्यक संस्करण , लेकिन एक शेड्यूल असिस्टेंट कार्य अब लॉग इन और आउट स्क्रिप्ट चलाने के लिए शामिल है।

मैंने पावर मैनेजर लिखा, इसलिए इसके कार्यान्वयन के बारे में तकनीकी प्रश्न पूछने के लिए स्वतंत्र महसूस करें। लॉग आउट ट्रिगर घटनाओं के मामले में, पावर प्रबंधक उपयोगकर्ता स्थिति में परिवर्तन के लिए सर्वेक्षण नहीं करता है, बल्कि इसके बजाय macOS द्वारा उपयोगकर्ता परिवर्तनों की सूचना दी जाती है। यह तरीका अधिक कुशल है कि स्क्रिप्ट लूपिंग / पोलिंग हो।

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