In Applescript, come faccio a lanciare l'url di Safari "Silently", quindi chiudi la finestra di Safari non vista

0

Sono nuovo su Applescript e MAC anche se il mio primo computer era un Apple II Plus e ho programmato in Apple Basic e Assembly.

Lo sto usando per creare un pulsante di allarme "Silent".

Abbiamo un sistema in atto che tramite una chiamata URL invierà un messaggio a un gruppo selezionato di computer, in questo caso quelli utilizzati dai nostri responsabili della sicurezza.

Ho scritto uno simile per PC usando il linguaggio di scripting AutoIT. Quando qualcuno fa clic su questo programma, per quanto riguarda chiunque guardi lo schermo, non succede nulla. È silenzioso al 100%. Ma non visto da nessuno che guarda lo schermo del PC, IE è stato lanciato minimizzato e nascosto, una stringa URL personalizzata, con un messaggio incorporato, viene aperta e quindi IE viene chiuso. I computer dei responsabili della sicurezza ricevono un messaggio dal sistema di messaggi, Informacast, e la sicurezza risponde di conseguenza. In nessun momento qualcuno sta guardando lo schermo del PC consapevole che è successo qualcosa. È tutto "silenzioso". Proprio come un allarme silenzioso in una banca.

La mia versione MAC, scritta in Applescript, funziona bene, tranne per il fatto che la chiamata a Safari può essere vista sullo schermo quando viene eseguita. È lì solo per pochi secondi quando viene caricato l'URL, quindi la finestra di Safari è chiusa, ma pochi secondi sono pochi secondi e chiunque guardi lo schermo saprà che qualcosa è successo quando è stato premuto l'allarme. Devo impedire che qualcosa venga mostrato all'avvio di Safari. Devo renderlo "Silent".

La parte dello script che apre Safari e carica l'URL è mostrata sotto ...

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

Ho provato a mettere la seguente riga nella routine "Tell" in vari punti, prima di "lanciare" dopo "avvio" prima di "posizione aperta" e dopo ecc., ma vedo ancora un bip della finestra di Safari mentre carica la stringa dell'URL.

set miniaturized of window 1 to true

Ho anche giocato con le varianti della riga seguente, ma ho ottenuto un errore di Applescript ogni volta.

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

Un'ultima cosa, è possibile che Safari o qualche altro programma possano essere aperti, magari non a schermo intero ecc. quando viene eseguito questo script ed è importante che non venga chiuso o modificato in alcun modo che possa indovinare qualcuno in al fatto che qualcosa stava accadendo sul sistema dopo che è stato premuto il "Pulsante di avviso". La linea "set miniaturized" a seconda di come veniva usata minimizzerebbe la finestra che ovviamente non vogliamo.

Di nuovo ho bisogno di essere in grado di lanciare l'URL al 10000% in modo silenzioso.

Grazie in anticipo a tutti coloro che sono in grado di provare e aiutare,

Ralph

    
posta Ralph 08.08.2014 - 01:00
fonte

2 risposte

4

Non sarai in grado di farlo in AppleScript: Safari fa solo qualcosa su finestre aperte.

Dovresti assolutamente dare un'occhiata agli script da riga di comando come curl .

L'AppleScript per chiamare un comando di shell assume la forma:

set variableName to do shell script "command"

Quindi usando il tuo AlertURLString vorresti qualcosa come:

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

Vedi la pagina man di curl per maggiori dettagli su come usare curl per fare cose come POST e PUT chiama o allega i payload alle chiamate e cosa no. È incredibilmente potente.

    
risposta data 08.08.2014 - 01:08
fonte
0

se guardi la pagina man di curl (man curl) non sembra avere un limite nella dimensione dell'URL. Potresti voler usare le opzioni -d o -data.

    
risposta data 17.08.2014 - 19:45
fonte

Leggi altre domande sui tag