2010-12-04 69 views
1

我写了一个小脚本打开Safari浏览器在远程机器上:登录到Mac使用AppleScript

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

我远程运行AppleScript的,因为我可以通过SSH连接。但是,如果机器没有实际登录(即,我没有上去并输入我的详细信息),则什么都不会发生。请注意,我仍然可以使用SSH连接到计算机,因此仍然可以运行脚本。

那么我可以使用applescript远程登录机器吗?

+0

您可能会尝试实现的替代方案。如果你没有登录,这意味着你不在机器前面,所以我假设你不需要Safari的图形界面或者与浏览器交互。您的需求是否可以通过非图形或非交互式的方式提供,例如curl或wget? – Roadmaster 2010-12-05 00:02:14

+1

@Roadmaster这是为了新奇的目的;) – Matt 2010-12-05 00:05:48

回答

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 

是的。这是我使用的。只需更改前两行。我以根为根本;没有用sudo测试过。暂停确保文本已经出现,并且在继续之前插入光标已经移动到下一个字段。在开始的额外东西确保凭证最终在正确的领域(ASCII字符8是退格)。

已知错误:有时,即使插入光标闪烁,Snow Leopard的登录窗口也不允许输入文字。我还没有找到一种方法来发送所需的点击以获得名称字段中的实际焦点(用鼠标单击(即使通过vnc),脚本也能正常工作)。

编辑:确认!忘了提及使用System Events进行GUI交互取决于OS X内置的Universal Access系统。它只是一个复选框,只需要打开一次即可。系统首选项>通用访问>启用对辅助设备的访问。