OSX शेर पर स्विचिंग स्क्रिप्टेड तेज उपयोगकर्ता


2

मैं मशीनों के एक सेट के लिए तेजी से उपयोगकर्ता स्विचिंग को स्वचालित करना चाहूंगा। मेरा वर्तमान, टूटा हुआ समाधान इस एपलस्क्रिप्ट स्निपेट है, जिसे तेंदुए / SL लिपियों से ऑनलाइन अनुकूलित किया गया है:

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

पासवर्ड सफलतापूर्वक दर्ज किया गया लगता है, लेकिन keystroke returnउपयोगकर्ता को लॉग इन करने में विफल रहता है (स्क्रीन "कंपन" विफल प्रयास को इंगित करने के लिए)। मज़ेदार बात यह है कि एंटर कुंजी को मैन्युअल रूप से दबाने पर लॉगिन पूरा हो जाता है (इसलिए मेरा दावा है कि पासवर्ड सफलतापूर्वक दर्ज किया गया है)

कोई विचार?

धन्यवाद!


कोई ठोस विचार नहीं है, लेकिन शायद आपको tabबाहर निकलना है और फिर लॉग इन करने के लिए बटन दबाना है?
slhck

@ श्लोक: नहीं, यह कोशिश की, कोई भाग्य नहीं है। फिर भी सुझाव के लिए धन्यवाद!
रोम 1

आप इसके बजाय उपयोगकर्ता को अपने पासवर्ड टाइप करने को स्वचालित करने के लिए स्विच को स्वचालित करना चाहेंगे, विचार करें कि कोई भी घटना आपकी स्क्रिप्ट को तोड़ देगी।
तमारा वाइज्समैन

जवाबों:


1

मैं आपको नहीं बता सकता कि क्या गलत हो सकता है, लेकिन यहाँ कई साल पहले से एक समाधान है:

इंटेल iMacs पर 'बताओ एप्लिकेशन "सिस्टम इवेंट्स टू कीस्ट्रोक रिटर्न'

अनिवार्य रूप से, इस पोस्ट के लेखक का कहना है कि बहुत ही समान परिदृश्य में, वापसी कुंजी केवल PowerPC iMacs पर लॉगिन को सफलतापूर्वक ट्रिगर करेगी; इंटेल मशीनों पर, स्क्रिप्ट 1 मिनट के लिए डिस्प्ले स्लीप टाइमआउट सेट करती है, 65 सेकंड इंतजार करती है, और फिर किसी तरह, डिस्प्ले सो जाने के बाद, "कीस्ट्रोक रिटर्न" काम करता है। (!)

बहुत भयानक लगता है, लेकिन हो सकता है कि आप इस से कुछ काम कर सकें।


0

लगता है कि स्क्रिप्ट के दो प्रमुख संस्करण तैर रहे हैं।

पहला आपके जैसा है, सिवाय इसके कि "कीस्ट्रोक रिटर्न" को दो बार ( स्रोत ) से दोहराया गया है :

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 

किसी ने यह भी पता लगाया कि दो बार पर्याप्त नहीं है:

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

जबकि कोई और इस समाधान को पसंद करता है, जो लॉगिन विंडो में प्रदर्शित "अन्य ..." वाले उपयोगकर्ताओं की सूची होने पर काम करेगा:

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

(एक गैर-मैक उपयोगकर्ता द्वारा उत्तर दिया गया)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.