AppleScript: वाईफ़ाई लॉगिन के लिए जटिल स्क्रिप्ट, समय प्राप्त करना और स्क्रीनसेवर लॉन्च करना


2

विशेषज्ञों का!

मैं ऐप्पल स्क्रिप्ट के लिए नया हूं और इसकी जटिलता से जूझ रहा हूं ... लेकिन शायद कोई मदद कर सकता है। बात मैं अपने iMac करना चाहते हैं:

IMac का उपयोग किसी कलाकार के काम के लिए एक उच्च अंत स्लाइड शो के रूप में किया जाता है। यह बेहद जरूरी है कि स्लाइड शो को प्रदर्शित करने के लिए iMac को सही समय मिले।

तो iMac क्या करने की जरूरत है:

  • iMac रोज सुबह 8 बजे उठता है और रात 11 बजे सो जाता है (Energysaver द्वारा)

  • iMac टॉगल करता है वाईफ़ाई पर और बंद (नीचे Script1 देखें)

  • सफारी शुरू करना (स्क्रिप्ट 2)
  • iMac सही Wifi ढूंढता है और (लापता) में लॉग इन करता है
  • Wifi का लॉगिन पेज उपयोग की शर्तों को स्वीकार करने के लिए "चेकबॉक्स में क्लिक करें" की आवश्यकता है (SCRIPT 3 मैंने नेट पर मिली स्क्रिप्ट को अनुकूलित करने की कोशिश की, लेकिन वास्तव में काम नहीं करता है)
  • iMac एक समर्पित समय (सुबह 9 बजे) तक इंतजार करता है और स्क्रीनसेवर को लॉन्च करता है। (SCRIPT 4 लॉन्च हो रहा है, लेकिन विशिष्ट समय के गायब होने तक प्रतीक्षा की जा रही है)

कोई मदद & amp; सुझावों की बहुत सराहना की जाएगी !! एंड्रियास

जो मेरे पास है:

- एससीआरआईपीटी १

set status to do shell script "networksetup -getairportpower en1"

if status ends with "On" then

    do shell script "networksetup -setairportpower en1 off; sleep 2"

end if


set status to do shell script "networksetup -getairportpower en1"

if status ends with "Off" then

    do shell script "networksetup -setairportpower en1 on"

end if

- एससीआरआईपीटी २

tell application "Safari" activate

end tell

--SCRIPT 3 उपयोग की शर्तों को स्वीकार करने के लिए बॉक्स पर क्लिक करें

to clickID(theId) 

    tell application "Safari"

        do JavaScript "document.getElementById('" & theId & "').click();" in document 1 

    end tell 

end clickID

--SCRIPT 4 के लिए समय, प्रतीक्षा और स्क्रीनसेवर लॉन्च करने की आवश्यकता है

set ntpdPID to do shell script "pgrep ntpd; exit 0"

if ntpdPID is not "" then

    do shell script "systemsetup -setusingnetworktime On" with administrator privileges

end if

try

    tell application id "com.apple.Screensaver.engine" to launch

end try

हम स्क्रिप्ट 3 के साथ तब तक मदद नहीं कर सकते जब तक हमारे पास पेज का सोर्स कोड न हो। Html के प्रासंगिक अनुभागों को शामिल करने के लिए कृपया अपने प्रश्न को संपादित करें।
JBis

1
व्यक्तिगत दृष्टिकोण से, कोई भी डिजिटल साइनेज प्रोजेक्ट मैंने किया, मुझे जो सबसे उपयोगी लगा वह था नहीं मशीन को उसी नेटवर्क से कनेक्ट करना जो हर कोई उपयोग कर रहा था - विशेष रूप से एक स्वतंत्र (मुफ्त) सार्वजनिक नेटवर्क नहीं। इसने दो काम किए: 1) यह सुनिश्चित किया कि मशीन में कनेक्टिविटी थी और 2) अनधिकृत पहुंच को रोकती थी। यह कुछ ऐसा है जिसे आपको आगे की जांच करनी चाहिए; विशेष रूप से, वीएलएएन और (जहां लागू हो) विभिन्न एसएसआईडी का उपयोग करके देखें
Allan

अपने मूल्यवान मदद के लिए धन्यवाद! मैं आप लोगों से इतनी मदद पाने के लिए वास्तव में प्रभावित हूँ! अब मैं वेबसाइट के कोड की जांच करूंगा और पोस्ट करूंगा - कुछ दिन लगेंगे क्योंकि मैं एक बिजनेस ट्रिप पर जाऊंगा ...।
Andreas

@Allan +1 बहुत अच्छी बात है। मैं शायद मशीन के लिए WPA2 सुरक्षित नेटवर्क का उपयोग करने का सुझाव दूंगा। स्क्रिप्ट करना आसान होगा। मेहमानों के लिए कैप्टिव पोर्टल एक की अनुमति देते समय।
JBis

@ सभी & amp; JBis इस संकेत के लिए धन्यवाद! मैं जांच करूंगा कि क्या मैं मशीन के लिए एक सुरक्षित नेटवर्क स्थापित कर सकता हूं। इसके अतिरिक्त ऐसा लगता है कि मैं जिस सार्वजनिक नेटवर्क का उपयोग करना चाहता था वह उचित कनेक्शन सुनिश्चित करने के लिए पर्याप्त विश्वसनीय नहीं है ...
Andreas

जवाबों:


1

विप


लिपि १

repeat 2 times
    set status to do shell script "networksetup -getairportpower en0"
    if status ends with "On" then
        do shell script "networksetup -setairportpower en1 off"
        delay 2
    else
        do shell script "networksetup -setairportpower en1 on"
    end if
end repeat

लिपि २

tell application "Safari" to activate

स्क्रिप्ट 2.5

कनेक्ट करने के लिए @CJK कोड का उपयोग करें। फिर नियम और शर्तों को स्वीकार करने के लिए स्क्रिप्ट 3 का उपयोग करें।


लिपि ३

  1. सफ़ारी & gt; प्राथमिकताएँ & gt; उन्नत & gt; मेनू बार में मेनू का विकास दिखाएं

  2. विकसित करें & gt; Apple ईवेंट से जावास्क्रिप्ट की अनुमति दें

3।

tell application "Safari"
    activate
    make new document with properties {URL: "http://captive.apple.com"}
    if not (exists document 1) then reopen
    tell current tab of window 1 to set URL to "https://stackoverflow.com/questions/24500011/how-to-wait-for-webpage-to-fully-load-before-proceeding-script"
    set the_state to missing value
    repeat until the_state is "complete"
        set the_state to (do JavaScript "document.readyState" in document 1)
        delay 0.2
    end repeat
    set theId to "WillBeAddedOnceCodeIsAddedInQuestion"
    do JavaScript "document.getElementById('" & theId & "').click();" in document 1
end tell

लिपि ४

यदि स्क्रिप्ट काम कर रही है तो निम्न कार्य करें:

क्रोन विधि (पदावनत)

1।

export VISUAL=nano; crontab -e

2. निम्नलिखित को कॉपी और पेस्ट करें

0 9 * * * osascript /path/to/YourAppleScript.scpt

3. प्रेस ^ हे (नियंत्रण + ओ)

  1. एंटर दबाए

ध्यान दें: यदि कंप्यूटर सो रहा है, तो क्रोन निष्पादित नहीं करेगा

launchd

  1. सुडो नैनो / लॉर्ड्स / लंचडैमन्स / कॉम.मेकंपनी.प्लिस्ट

  2. निम्नलिखित को कॉपी और पेस्ट करें:

<?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.daemon</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/osascript</string>
        <string>/path/to/YourAppleScript.scpt</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>9</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>
  1. प्रेस ^ O (नियंत्रण + O)

  2. एंटर दबाए

5।

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


1
जैसा कि सीजेके बताते हैं, launchd शायद बेहतर है cron, जिसके उत्तरार्ध को macOS पर पदावनत माना जाता है। StartCalendarInterval शायद यहाँ उपयोग की कुंजी होगी।
aaplmath

हालांकि, यह काम नहीं करता है, लेकिन यह इस तरह की सरल चीजों के लिए थोड़ा अधिक सरल है। अगर यह कुछ अधिक जटिल था तो मैं लॉन्चड का उपयोग करूंगा। वैसे भी मैं उस विकल्प को शामिल करने के लिए प्रश्न संपादित करूंगा।
JBis

बहुत से उपयोगकर्ताओं ने प्राप्त करने के साथ मुद्दों की सूचना दी है Apple ईवेंट से जावास्क्रिप्ट की अनुमति दें पर विकसित करना का मेनू सफारी काम करने के लिए। मेरे लिए macOS हाई सिएरा में पहली बार, यह सिर्फ कोई फर्क नहीं पड़ता कि मैं क्या करने की कोशिश की अनगिनत पदों में सुझाव दिया है। फिर इस पर टॉगल किया गया, और थोड़ी देर बाद मैंने इसे टॉगल किया और यह आगे काम नहीं करेगा। सप्ताह बाद में मैं दिखाने के लिए चेक मार्क प्राप्त करने में सक्षम था, लेकिन अब मुझे इसे बंद करने की आवश्यकता नहीं है, क्योंकि मुझे इसकी आवश्यकता है। यदि आप कुछ लगाते हैं तो BTW यह बहुत बेहतर पढ़ेगा space चारों ओर > जब आप उनका उपयोग करते हैं, उदा। सफ़ारी & gt; प्राथमिकताएँ & gt; उन्नत & gt; मेन्यू बार में मेनू विकसित करना आदि।
user3439894

open location नहीं है कोई सफारी कमांड और का उपयोग अंदर नहीं किया जाना चाहिए सफारी tell ब्लॉक (या, बल्कि, यह ऐसा करने के लिए बहुत अच्छा है)। open location सिस्टम में एक URL खोलता है चूक ब्राउज़र, जो हो सकता है क्रोम । में एक URL खोलने के लिए सफारी , करना tell app "Safari" to make new document with properties {URL: "http://example.com"}
CJK
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.