2010-12-04 129 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系統。它只是一個複選框,只需要打開一次即可。系統首選項>通用訪問>啓用對輔助設備的訪問。