2010-12-04 29 views
1

j'ai écrit un petit script pour ouvrir Safari sur une machine distante:Connectez-vous pour mac en utilisant AppleScript

tell application "Safari" 
    activate 
    set URL of first document to "http://www.stackoverflow.com/" 
end tell 

Je courrais le AppleScript à distance parce que je peux connecter via SSH. Cependant, si la machine n'est pas physiquement connectée (c'est-à-dire que je n'y suis pas allé et que je n'ai pas saisi mes coordonnées), rien ne se passe. Remarque, je peux toujours me connecter à la machine en utilisant SSH, donc je peux encore exécuter des scripts.

Puis-je connecter la machine à distance en utilisant applescript?

+0

Il existe peut-être des alternatives à ce que vous essayez d'atteindre. Si vous n'êtes pas connecté, cela signifie que vous n'êtes pas devant la machine, donc je suppose que vous n'avez pas besoin de l'interface graphique de Safari ou d'interagir avec le navigateur. Vos besoins pourraient-ils être servis par quelque chose de non-graphique ou non-interactif tel que curl ou wget? – Roadmaster

+1

@Roadmaster C'est pour des raisons de nouveauté;) – Matt

Répondre

5
name="theshortname"; 
password="thePassword"; 

osascript <<EOF 
tell application "System Events" 
    keystroke tab 
    keystroke (ASCII character 8) 
    keystroke tab 
    keystroke (ASCII character 8) 
    keystroke return 
    delay 0.5 
    keystroke tab 
    keystroke "$name" 
    keystroke tab 
    delay 0.5 
    keystroke "$password" 
    delay 0.5 
    keystroke return 
    keystroke return 
    keystroke return 
    keystroke return 
end tell 
EOF 

Oui. C'est ce que j'utilise. Changez simplement les deux premières lignes. Je le fais en tant que root; Je n'ai pas testé avec sudo. Les pauses garantissent que le texte est apparu et que le curseur d'insertion s'est déplacé vers le champ suivant avant de continuer. Les choses supplémentaires au début assurent que les informations d'identification finissent dans les bons champs (caractère ASCII 8 est retour arrière).

Bogue connu: parfois, la fenêtre de connexion de Snow Leopard ne permet pas la saisie de texte malgré le curseur d'insertion clignotant. Je n'ai pas trouvé le moyen d'envoyer le clic nécessaire pour obtenir le focus dans le champ de nom (un simple clic avec une souris (même via vnc) fait que le script fonctionne bien).

Modifier: ACK! J'ai oublié de mentionner que l'utilisation des événements système pour l'interaction de l'interface graphique dépend du système d'accès universel intégré à OS X. Il s'agit simplement d'une case à cocher et il suffit de l'activer une seule fois. Préférences Système> Accès universel> Activer l'accès aux appareils fonctionnels.

+0

Pour cliquer, vous pouvez utiliser [cliclick] (http://www.bluem.net/fr/mac/cliclick/). Aussi, y a-t-il une raison pour que vous ayez ceci comme script shell au lieu d'un AppleScript? –

+0

@ antal-s-z Désolé, j'aurais dû expliquer cela mieux; la plus grande partie est en fait un applescript. À l'intérieur du '' EOF '[heredoc] (http://en.wikipedia.org/wiki/Here_document) est un bloc d'applescript qui est transféré au programme de ligne de commande Open Script Architecture, [osascript] (http: // developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osascript.1.html). osascript est juste un moyen facile d'exécuter le code AS à la volée via ssh, ajouté pour mieux adapter ma réponse à la situation du demandeur. –