Chuyển đổi nhanh người dùng theo kịch bản trên OSX Lion


2

Tôi muốn tự động hóa chuyển đổi người dùng nhanh cho một bộ máy. Giải pháp bị hỏng hiện tại của tôi là đoạn trích này, được điều chỉnh từ các tập lệnh Leopard / SL được tìm thấy trực tuyến:

set thePassword to "foo"
set N to "1027"
do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID " & N
delay 0.8
tell application "System Events"
  keystroke thePassword
  delay 1
  keystroke return
end tell

Mật khẩu dường như được nhập thành công, nhưng keystroke returnkhông đăng nhập được người dùng (màn hình "rung" để biểu thị một lần thử thất bại). Điều thú vị là nhấn phím enter bằng tay sẽ hoàn thành việc đăng nhập (do đó tôi khẳng định rằng mật khẩu được nhập thành công)

Có ý kiến ​​gì không?

Cảm ơn!


Không có ý tưởng cụ thể, nhưng có lẽ bạn phải tabra ngoài và sau đó nhấn nút để đăng nhập?
slhck

@slhck: không, đã thử rồi, không gặp may đâu. Nhờ đề nghị mặc dù!
Rom1

Bạn sẽ muốn tự động hóa việc chuyển đổi sang người dùng hơn là tự động nhập mật khẩu của họ, xem xét rằng bất kỳ sự kiện nào sẽ phá vỡ tập lệnh của bạn.
Tamara Wijsman

Câu trả lời:


1

Tôi không thể nói cho bạn biết điều gì có thể xảy ra, nhưng đây là cách giải quyết từ nhiều năm trước:

'thông báo cho ứng dụng "Sự kiện hệ thống" để trở lại tổ hợp phím' trên Intel iMac

Về cơ bản, tác giả của bài đăng này nói rằng trong một kịch bản rất giống nhau, khóa trả về sẽ chỉ kích hoạt thành công đăng nhập trên PowerPC iMacs; trên các máy Intel, tập lệnh đặt thời gian chờ hiển thị thành 1 phút, đợi 65 giây và sau đó bằng cách nào đó, khi màn hình ngủ, "phím tắt trở lại" hoạt động. (!)

Nghe có vẻ khá kinh khủng, nhưng có lẽ bạn có thể điều chỉnh thứ gì đó khả thi từ cái này.


0

Dường như có hai phiên bản chính của kịch bản nổi xung quanh.

Cái đầu tiên tương tự như của bạn, ngoại trừ "keystroke return" được nhân đôi hai lần ( nguồn ):

osascript <<EOF
tell application "System Events"
keystroke "USERNAME"
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke return
end tell
EOF 

Ai đó thậm chí đã nhận ra rằng hai lần là không đủ:

osascript <<EndOfMyScript
tell application "System Events"
keystroke "USERNAME"
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke tab
delay 0.5
keystroke "PASSWORD"
delay 0.5
keystroke return
keystroke return
keystroke return
keystroke return
keystroke return
end tell
EndOfMyScript

Mặc dù người khác thích giải pháp này, nhưng giải pháp này sẽ hoạt động nếu bạn có danh sách người dùng có "Khác ..." được hiển thị trong cửa sổ đăng nhập:

osascript <<EOT
set username_ to "username"
set password_ to "password"
tell application "System Events"
key code 125 -- Down Arrow
key code 125 -- Down Arrow
delay 1
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
key code 125 -- Down Arrow
delay 0.5
key code 36 -- Return
delay 1
tell process "SecurityAgent" to set value of text field 1 of group 1 of window 1 to username_
tell process "SecurityAgent" to set value of text field 2 of group 1 of window 1 to password_
click button "Log In" of window 1 of application process "SecurityAgent"
end tell
EOT

(Đã được trả lời bởi người dùng không phải là máy Mac)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.