Mac OS X:遠程執行osascript命令及問題解決
對于系統管理/電腦維護人員,在Applr Remote Desktop的管理機上可以通過圖形方式遠程控制網絡上的每臺Mac電腦, 而很多時候需要發送Unix命令來完成工作。比如有時需要使用管理員帳戶遠程登錄到每臺電腦,大家普遍知道的命令是:
osascript -e 'tell application "System Events"' -e 'keystroke "LOGIN_NAME"' -e 'keystroke tab' -e 'delay 0.5' -e 'keystroke "PASSWORDHERE"' -e 'delay 0.5' -e 'keystroke return' -e 'end tell' |
上面的命令可以讓每一個處于登錄狀態的電腦自動登錄到LOGIN_NAME用戶。這樣管理員就可以對每個電腦進行操作了.
下面是更加清晰的一個腳本版本
osascript -e 'tell application "System Events" to keystroke "LOGIN_NAME"'; /
osascript -e 'tell application "System Events" to keystroke tab'; / osascript -e 'tell application "System Events" to delay 0.5'; / osascript -e 'tell application "System Events" to keystroke "PASSWORDHERE"'; /
osascript -e 'tell application "System Events" to delay 0.5'; /
osascript -e 'tell application "System Events" to keystroke return'
|
然而實際使用中會問題:
1. 遠程計算機根本不執行上面的操作:
這個問題一般是由于被管理的電腦沒有設置為準許執行UI腳本,所以要打開它。可以通過兩種方式:
A. 首先以管理員身份登錄到該電腦,然后進入"System Preferences -> Universal Access",開啟在下部的選項 "Enable access for assistive devices"
B. 這個方法更簡單,而且可以遠程發送(Unix命令)到目標電腦:
echo a > /var/db/.AccessibilityAPIEnabled |
2. 那個腳本只有在目標電腦處于登錄窗口的時候才可以使用. 所以,需要首先啟動目標電腦,這可以通過好多方法啟動目標機. 比如可以使用ARD菜單中的Restart命令,也可以通過發送下面的任何一個命令
osascript -e 'tell app "Finder" to restart'
|
shutdown -r TIME "This computer is going to restart."
|
其中TIME可以是now, 或者是時間比如: 10:00am等等
3. 還要注意的是如果登錄不是輸入用戶名的方式,是用戶列表的方式,那么上面的方式都不可用,需要修改為列表方式并禁止自動登錄:
4. 可以發送下面命令來使當前用戶退出到登錄狀態:
osascript -e 'tell app "Finder" to exit'
|
或者使用ARD的菜單命令來使用戶退出登錄.
5. 如果是目標機設置了定時睡眠,可以使用Wake命令喚醒目標機, 要求是目標機設置允許遠程喚醒:
附錄:
下面的一些osascript命令比較有用:
|
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
