0 votos

En Applescript, ¿cómo puedo lanzar Safari "en silencio" url abierta y luego cerrar la ventana de Safari no visto

Soy nuevo en Applescript y MACs aunque mi primer ordenador fue un Apple II Plus y programé en Apple Basic y Assembly.

Lo estoy utilizando para crear un botón de alarma "silenciosa".

Disponemos de un sistema que, a través de una llamada URL, envía un mensaje a un grupo selecto de ordenadores, en este caso los utilizados por nuestros agentes de seguridad.

Escribí uno similar para PC utilizando el lenguaje de scripting AutoIT. Cuando alguien hace clic en este programa, en lo que respecta a cualquier persona que vea la pantalla, no pasa nada. Es 100% silencioso. Pero sin que lo vea nadie que esté mirando la pantalla del PC, se lanza IE minimizado y oculto, se abre una cadena de URL personalizada, con un mensaje incrustado, y luego se cierra IE. Los ordenadores de los agentes de seguridad reciben un mensaje del sistema de mensajes, Informacast, y la seguridad responde en consecuencia. En ningún momento nadie de los que observan la pantalla del PC se da cuenta de que ha ocurrido algo. Todo es "silencioso". Igual que una alarma silenciosa en un banco.

Mi versión para MAC, escrita en Applescript funciona bien, excepto que la llamada a Safari se puede ver en la pantalla cuando se produce. Sólo está ahí durante unos segundos mientras se carga la URL, y luego se cierra la ventana de Safari, pero esos pocos segundos son demasiado y cualquiera que observe la pantalla sabrá que ha pasado algo cuando se ha pulsado la alarma. Necesito evitar que se muestre algo cuando se inicie Safari. Necesito hacerlo "silencioso".

La parte del script que abre Safari y carga la URL se muestra a continuación...

tell application "Safari"
launch
open location AlertURLString (This is the variable that has the URL and embedded message in it)
delay 1
close window 1
end tell

He probado a colocar la siguiente línea en la rutina "Tell" en varios lugares, antes de "launch", después de "launch", antes de "open location" y después, etc., pero sigo viendo un parpadeo de la ventana de Safari mientras carga la cadena URL.

set miniaturized of window 1 to true

También he jugado con variaciones de la siguiente línea, pero cada vez obtenía un error de Applescript.

tell application "System Events" to set process "Safari" to false

Una cosa más, es posible que Safari o algún otro programa pueda estar abierto, tal vez no a pantalla completa, etc. cuando se ejecute este script y es importante que no se cierre o cambie de ninguna manera que pueda dar una pista a alguien de que algo está sucediendo en el sistema después de que se pulse el "Botón de Alerta". La línea "set miniaturized", dependiendo de cómo se use, minimizaría la ventana, lo que por supuesto no queremos.

De nuevo lo que necesito es poder lanzar la URL 10000% en silencio.

Gracias de antemano a todos los que puedan intentar ayudar,

Ralph

4voto

Satanicpuppy Puntos 4902

No podrá hacerlo en AppleScript : Safari sólo hace algo en Windows abierto.

Definitivamente deberías mirar la línea de comandos scripts como curl .

El AppleScript para llamar a un comando del shell tiene la forma

set variableName to do shell script "command"

Así que usando su AlertURLString querrías algo como:

set curlOutput to do shell script "curl '" & AlertURLString & "'"

Ver la página man de curl para más detalles sobre cómo utilizar curl para hacer cosas como llamadas POST y PUT o adjuntar cargas útiles a las llamadas y demás. Es increíblemente potente.

0voto

nimcap Puntos 2738

Si miras la página man de curl (man curl) no parece tener un límite en el tamaño de la url. Puede que quieras mirar de usar las opciones -d o --data.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X