Stiamo eseguendo test che richiedono più desktop su un Mac Mini.
Stiamo utilizzando con successo un tunnel TCP ssh su localhost, da 5900 a 6900, per fare in modo che Screen Sharing ci permetta di accedere ad altri utenti su questo stesso computer con vnc: // user: password @ localhost: 6900 e alcuni Applescript da premere i pulsanti di dialogo risultanti. Riesco a rilevare l'accesso riuscito tramite ssh eseguendo un programma in Java 1.7 con export AWT_TOOLKIT=CToolkit
che tenta di aprire una finestra AWT come utente secondario, che non riesce se il desktop non è avviato.
Questo è abbastanza affidabile, anche se mi piacerebbe sapere di metodi più affidabili!
Dove le cose stanno andando male:
Stiamo riscontrando problemi nel registrare questi utenti robot, per lasciare la macchina fresca per altri test che obiettano a tutta la memoria sprecata dai processi vaganti che gli utenti lasciano in esecuzione.
Attualmente sto usando
for i in $users ; do
ssh ${i}@localhost "osascript -e 'tell application \"System Events\"'
-e 'log out'
-e 'delay 3'
-e 'keystroke return'
-e end" &
done; wait
ma a volte System Events
a quanto pare non è in esecuzione e si rifiuta di iniziare:
33:40: execution error: System Events got an error: Application isn’t running. (-600)
Di recente ho aggiunto -e 'if it is not running then launch' -e 'delay 5'
immediatamente prima del -e 'log out'
, ma sembra che non ci sia molto da aiutare.
Ho pensato che sostituire tutte le cose di Applescript con alcune varianti di ssh kill -KILL -1
avrebbe funzionato, almeno come back-up per gli utenti di holdout il cui System Events
è rotto, ma lascia un buon paio di dozzine di CoreServices , PrivateFrameworks e Framework GUI: sembrano le cose in esecuzione, la maggior parte delle quali si rifiutano di morire anche con kill -9
puntato manualmente ai loro PID. Ho provato con uno script a due stadi, catturando l'output di killall -s in un file e spruzzandolo in una seconda sessione ssh.
Esiste un modo più affidabile per registrare questi utenti e uccidere tutti i loro processi? Ho i diritti di amministrazione sulla scatola, ma preferirei qualcosa sulla riga di comando di Unix per evitare di scrivere ulteriori dolorosi AppleScript per manipolare la GUI.
Grazie!