मैं भी कुछ ऐसा ही चाहता था, लेकिन एक विशिष्ट समय पर हमेशा ताला लगाने के बजाय, मैं केवल कुछ शर्तों पर ही ताला लगाना चाहता था। मैं उन स्थितियों की जांच करने के लिए जिस स्क्रिप्ट का उपयोग करता था, वह क्रोन द्वारा ट्रिगर की गई थी, इसलिए मेरे पास एक ही मुद्दा था।
जब मैंने CGSession -suspendएक क्रोनजॉब में कोशिश की , और देखा कि जब इसे ट्रिगर किया गया था, तो Console.app ने एक त्रुटि लॉग की, यह कहते हुए कि केवल रूट और वर्तमान लॉग किया गया उपयोगकर्ता फास्ट उपयोगकर्ता स्विचिंग को ट्रिगर कर सकता है। तो मेरा समाधान: इसे जड़ के रूप में चलाएं।
इसलिए मेरी स्क्रिप्ट में, मैंने कंप्यूटर को लॉक करने के लिए, निम्नलिखित का उपयोग किया:
sudo /usr/bin/osascript -e 'tell application "System Events" to do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"'
जटिल? हाँ। काम कर रहे? सकारात्मक!