Не зная пароля делает вещи сложными, но, возможно, решение:можно ли временно очистить пароль пользователя? (и после этого сбросить его к тому, что это было раньше.)
для начала:
во-первых, сделать окно входа в систему для отображения. Просто выйдите из системы текущего пользователя, используйте быстрое переключение пользователей или используйте SSH:
cd "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/"
sudo ./CGSession -suspend
или, чтобы сразу переключиться на конкретного пользователя, который, вероятно, покажет окно входа в систему (это вдруг больше не работает на моем 10.5 Leopard):
sudo ./CGSession -switchToUserID 501
то, что показано сейчас, немного зависит от системных настроек, но давайте предположим, что это значки пользователей и их имена. Чтобы активировать имя, нам нужно ввести первые буквы. Затем, после возвращения, запрос пароля показывает. В качестве альтернативы можно выбрать любой имя (например, нажав стрелку вниз), а затем нажмите Option-Return, чтобы получить запрос на оба любой имя пользователя и его пароль. Я не знаю, как можно сказать, какой экран отображается, но давайте оставим это на потом...
Итак, чтобы выбрать первое (случайное) имя пользователя и нажмите Option-Return, введите конкретное имя пользователя, нажмите Return и введите пароль:
sudo osascript -e 'tell app "System Events"
key code 125
keystroke return using option down
keystroke "the username"
delay 1.0
keystroke return
delay 1.0
keystroke "the password"
delay 1.0
keystroke return
end tell'
выше показана некоторая ошибка, которая, насколько я могу судить, не ограничивает использование:
osascript[285] : 3891612: (connectAndCheck) Untrusted apps are not
allowed to connect to or launch Window Server before login.
_RegisterApplication(), FAILED TO establish the default connection to
the WindowServer, _CGSDefaultConnection() is NULL.
альтернативно, используйте специфичный для языка скрипт из "скрипт окно входа через Apple Remote Desktop "(возможно, однажды комментарии на этом сайте покажут лучшее решение):
tell process "SecurityAgent"
set value of text field 1 of group 1 of window 1 to "the username"
set value of text field 2 of group 1 of window 1 to "the password"
end tell
click button "Log In" of window 1 of application process "SecurityAgent"
но главная проблема-это: для этого еще нужен пароль. Однако: очевидно, что пароль не требуется, если у пользователя пустой пароль. Фактически, для пустых паролей достаточно просто щелкнуть значок пользователя. Итак, если отправка нажатий клавиш с помощью AppleScript приемлема, то, возможно, "все", что осталось выяснить:
можно ли временно очистить пользователя пароль, позволяющий начать (или возобновить) сеанс, не зная этого пароля...?
можно ли сделать AppleScript безошибочным? Like:
- как рассказала if окно входа в систему отображается? (возможно
stat -f%Su /dev/console
могу помочь, а что дает root
при отображении окна входа в систему)
- как рассказала , который отображается окно входа? (Например: один показывает значки и имена входа или выпадающий список, или, может быть, только запрос пароля, если кто-то решил переключиться на определенного пользователя?)
- избавиться от задержек.
- как насчет этого сообщения об ошибке?
(примечание для тестирования: при использовании совместного использования экрана кажется, что установка предпочтения при управлении компьютерами: шифруйте пароли и нажатия клавиш только также сохраняет связь когда появится окно входа в систему, или после того как пользователь успешно зарегистрированный. При использовании шифровать все сетевые данные затем мой Mac должен заново устанавливать подключение общего доступа к экрану при каждом отображении имени входа или переключении пользователя.)