AppleScript: script complejo para el inicio de sesión WIFI, obtener tiempo y lanzar el protector de pantalla

2

Expertos!

Soy nuevo en el script de Apple y estoy luchando con su complejidad ... Pero quizás alguien pueda ayudar. Lo que quiero hacer mi iMac:

El iMac se utiliza para trabajar como una presentación de diapositivas de HighEnd para un trabajo de artista. Es extremadamente importante que el iMac obtenga la hora correcta para mostrar la presentación de diapositivas.

Entonces, qué debe hacer el iMac:

  • iMac se despierta todas las mañanas a las 8 AM y se duerme a las 11 PM (hecho por Energysaver)

  • iMac activa y desactiva el Wifi (ver script1 a continuación)

  • Iniciando Safari (script 2)
  • iMac encuentra el Wifi correcto e inicia sesión (falta)
  • La página de inicio de sesión de Wifi necesita un "clic en la casilla de verificación" para aceptar los términos de uso (SCRIPT 3 Intenté adaptar un script encontrado en la red, pero realmente no funciona)
  • iMac espera hasta un tiempo dedicado (9 AM) y lanza el protector de pantalla. (SCRIPT 4 se inicia, pero espera hasta que falte el tiempo específico)

Cualquier ayuda & ¡Las sugerencias serían muy apreciadas! Andreas

Lo que tengo:

--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 haciendo clic en la casilla para aceptar los términos de uso

to clickID(theId) 

    tell application "Safari"

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

    end tell 

end clickID

--SCRIPT 4 es necesario para obtener el tiempo, esperar y lanzar el protector de pantalla

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

1 respuesta

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 el código @CJK para conectarte. Luego use Script 3 para aceptar los términos y condiciones.

Script 3

  1. Safari > Preferencias > Avanzado > Mostrar el menú de desarrollo en la barra de menú

  2. Desarrollar > Permitir JavaScript desde 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

Si el script está funcionando, haga lo siguiente:

Método Cron (Depreciados)

1.

export VISUAL=nano; crontab -e

2. Copia y pega lo siguiente

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

3. Presiona ^ O (Control + O)

  1. Presiona Enter

Nota: Cron no se ejecutará si el la computadora está dormida

launchd

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

  2. Copia y pega lo siguiente:

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

  2. Presiona Enter

5.

 sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.plist
respondido por el JBis 07.08.2018 - 15:53

Lea otras preguntas en las etiquetas