रूट द्वारा LaucnDaemon के रूप में AppleScript (.scpt) कैसे चलाएं


2

मेरे पास एक AppleScript या ऐप्पलस्क्रिप्ट का सेट है जिसे मैं एक LaunchDaemon के रूप में चलाने की कोशिश कर रहा हूं। मुझे अपने उपयोगकर्ता के साथ लॉन्चडैम चलाने में कोई समस्या नहीं है। समस्या यह आती है कि मुझे एक फ़ाइल पढ़ने की आवश्यकता है जो केवल रूट द्वारा पठनीय है, यह सुरक्षा कारणों से डिज़ाइन के अनुसार है क्योंकि फ़ाइल में संवेदनशील जानकारी है।

मैंने आवश्यक precompiled AppleScript फ़ाइलें, .scpt फ़ाइलें, में स्थापित की हैं:

/Library/Scripts/myApplication/

मैंने अपनी मुट्ठी नीचे रख दी है:

/Library/LaunchDaemons

संपादित करें: यहाँ मेरे डेमन के लिए अभियोग है:

<?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>com.mycompany.myapp.service</string>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/osascript</string>
      <string>/Library/Scripts/myApp/myApp.scpt</string>
    </array>
</dict>

अब, जब मैं लॉन्चक्टल और सुडो का उपयोग करके पौधों को लोड करने की कोशिश करता हूं

sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.myapp.service.plist

मुझे systemlog.log में त्रुटियाँ मिलती हैं:

Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service[74757]): Service exited with abnormal code: 1
Aug 26 17:54:13 computername com.apple.xpc.launchd[1] (com.mycompany.myapp.service): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

हालाँकि, अगर मैं लॉन्च कमांड से "sudo" छोड़ता हूं तो यह पूरी तरह से काम करता है। मैंने मूल उपयोगकर्ता के रूप में टर्मिनल से स्क्रिप्ट चलाने की भी कोशिश की है, जो ठीक भी काम करता है। हालांकि, जैसे ही मैं उन्हें लॉन्चक्टल और सूडो के साथ लोड करने की कोशिश करता हूं, सब कुछ मर जाता है।

इस स्क्रिप्ट को पहले से चलाने के लिए मुझे मशीन पर स्क्रिप्ट एक्सेसिबिलिटी विशेषाधिकारों को चलाने वाले एप्लिकेशन को देना था, इसलिए पहले वाला सबलाइम टेक्स्ट 2, टर्मिनल और स्क्रिप्ट एडिटर। मैं अनुमान लगा रहा हूं कि यह किस कारण से स्क्रिप्ट नहीं चल रही है, लेकिन मुझे पता नहीं है कि सुलभता के तहत सक्षम करने के लिए कौन सा प्रोग्राम है, क्योंकि मुझे संकेत नहीं दिया जा रहा है। तो जिस तरह से मुझे इसकी आवश्यकता है उसे चलाने के लिए मुझे यह स्क्रिप्ट कैसे मिलेगी?


कृपया अपने LaunchDaemon प्लिस्ट की सामग्री को साझा करें।
सिल्लीविल्ली

कोशिश करें और इसे lingon peterborgapps.com/lingon के साथ सेट करें, इसके लिए कौन से विकल्प हैं अगर मुझे सही याद है
चिह्नित करें

जवाबों:


0

अपनी लॉन्च की गई नौकरी को सही तरीके से सेट-अप करने पर, आप AppleScript की सीमा तक पहुंच सकते हैं।

AppleScript को GUI (एक्वा सत्र) की आवश्यकता होती है

यदि आपके AppleScript को लॉन्च करने के लिए यूजर rootप्रोसेस के रूप में उपयोग किया जाता है , तो इसमें ग्राफिकल यूजर इंटरफेस नहीं होगा । AppleScript के अधिकांश को लगातार काम करने के लिए एक ग्राफिक यूजर इंटरफेस की आवश्यकता होती है। ओएस एक्स के संस्करण के आधार पर, यह काम कर सकता है, लेकिन इसे डिज़ाइन नहीं किया गया है।

ओएस एक्स पर प्रक्रियाएं उपयोगकर्ता सत्रों के बीच तुच्छ रूप से पार नहीं कर सकती हैं

शेल स्क्रिप्ट करें

एक अधिक मजबूत दृष्टिकोण बैश, पर्ल, रूबी या अजगर जैसे शेल स्क्रिप्ट में उच्च विशेषाधिकार की आवश्यकता वाले कार्यक्षमता को अलग करना है।

आपका AppleScript तब उस स्क्रिप्ट को AppleScript की शेल शेल का उपयोग करके कॉल कर सकता है :

do shell script "command" user name "me" password "mypassword" with administrator privileges

यदि आपको उपयोगकर्ता नाम और पासवर्ड डालने से बचने की आवश्यकता है, तो यह संभव है लेकिन इस प्रश्न के दायरे से परे है।

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