AppleScript: script complesso per l'accesso WIFI, ottenere tempo e avviare lo screensaver

2

Gli esperti!

Sono nuovo nella sceneggiatura di Apple e alle prese con la sua complessità ... Ma forse qualcuno può aiutarti. La cosa che voglio fare il mio iMac:

L'iMac viene utilizzato come slideshow HighEnd per il lavoro di un artista. È estremamente importante che l'iMac ottenga l'ora corretta per la visualizzazione della presentazione.

Quindi cosa deve fare l'iMac:

  • iMac si sveglia ogni mattina alle 8:00 e si addormenta alle 23:00 (fatto da Energysaver)

  • iMac attiva e disattiva la funzionalità Wi-Fi (vedi lo script1 di seguito)

  • Avvio di Safari (script 2)
  • iMac trova il Wifi corretto e accede (mancante)
  • La pagina di accesso del Wifi richiede un "clic nella casella di controllo" per accettare i termini di utilizzo (SCRIPT 3 ho provato ad adattare uno script trovato in rete, ma in realtà non funziona)
  • iMac attende fino a un'ora dedicata (9 AM) e avvia lo screensaver. (Lancio di SCRIPT 4, ma in attesa che manchi tempo specifico)

Qualsiasi aiuto e amp; i suggerimenti sarebbero molto apprezzati !! Andreas

Cosa ho:

- SCRIPT 1

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

- SCRIPT 2

tell application "Safari" activate

end tell

- SCRIPT 3 facendo clic sulla casella per accettare i termini di utilizzo

to clickID(theId) 

    tell application "Safari"

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

    end tell 

end clickID

- SCRIPT 4 è necessario per ottenere il tempo, attendere e avviare lo screensaver

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
    
posta Andreas 07.08.2018 - 12:23
fonte

1 risposta

1

WIP

Script 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

Script 2

tell application "Safari" to activate

Script 2.5

Usa il codice @CJK per connetterti. Quindi utilizza Script 3 per accettare termini e condizioni.

Script 3

  1. Safari > Preferenze > Avanzate > Mostra il menu Sviluppo nella barra dei menu

  2. Sviluppa > Consenti JavaScript da Apple Events

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

Script 4

Se lo script funziona, procedi come segue:

Metodo cron (non più utilizzato)

1.

export VISUAL=nano; crontab -e

2. Copia e incolla quanto segue

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

3. Premi ^ O (Controllo + O)

  1. Premere Invio

Nota: Cron non verrà eseguito se il il computer è addormentato

launchd

  1. sudo nano /Library/LaunchDaemons/com.mycompany.plist

  2. Copia e incolla quanto segue:

<?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. Premi ^ O (Control + O)

  2. Premere Invio

5.

 sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.plist
risposta data 07.08.2018 - 15:53
fonte

Leggi altre domande sui tag