Незнання пароля ускладнює справи, але можливо рішення таке: чи можна тимчасово видалити пароль користувача? (А потім скиньте його до того, що було раніше.)
Для початку:
Спочатку отримайте вікно для входу для відображення. Просто вийдіть із поточного користувача, використовуйте швидку комутацію користувачів або використовуйте SSH:
cd "/ Система / Бібліотека / Основні сервіси / Додатки меню / Користувач.меню / Зміст / Ресурси /"
sudo ./CGSession -призначення
Або відразу перейти до конкретного користувача, який, ймовірно, покаже вікно входу (це раптом більше не працює на моєму 10.5 леопарді):
sudo ./CGSession -switchToUserID 501
Що тепер показано, трохи залежить від системних налаштувань, але припустимо, це значки користувачів та їх імена. Щоб активувати ім’я, нам потрібно було б набрати перші літери. Потім, після повернення, з'являється запит на пароль. Крім того, можна вибрати будь-яке ім’я (наприклад, натискаючи стрілку вниз), а потім натиснути опцію-повернення, щоб запропонувати як будь-яке ім'я користувача, так і його пароль. Я не знаю, як можна визначити, на якому екрані відображається, але давайте збережемо це для подальшого ...
Отже, щоб вибрати перше (випадкове) ім'я користувача та натиснути Option-Return, введіть певне ім’я користувача, натисніть Return і введіть пароль:
sudo osascript -e 'розповісти додаток "Системні події"
код ключа 125
повернення натискання клавіші, використовуючи опцію вниз
натискання клавіші "ім'я користувача"
затримка 1,0
повернення натискання клавіші
затримка 1,0
натискання клавіші "пароль"
затримка 1,0
повернення натискання клавіші
кінець скажи '
Сказане показує деяку помилку, яка, наскільки я можу сказати, не обмежує використання:
osascript [285]: 3891612: (connectAndCheck) Довірених програм немає
дозволено підключитися до або запустити сервер Windows перед входом у систему.
_RegisterApplication (), НЕ вдалося встановити з'єднання за замовчуванням до
WindowServer, _CGSDefaultConnection () - NULL.
Крім того, використовуйте мовний сценарій із " Сценарію вікна входу через Apple Remote Desktop " (можливо, одного дня коментарі на цьому веб-сайті покажуть краще рішення):
розповісти процес "SecurityAgent"
встановити значення текстового поля 1 групи 1 вікна 1 на "ім'я користувача"
встановити значення текстового поля 2 групи 1 вікна 1 на "пароль"
кінець розповісти
натисніть кнопку "Увійти" у вікні 1 процесу заявки "SecurityAgent"
Але головна проблема така: для цього ще потрібен пароль . Однак: очевидно, пароль не потрібен, коли у користувача є порожній пароль. Насправді, для порожніх паролів все, що потрібно, просто натискання піктограми користувача. Отже, якщо надсилання натискань клавіш за допомогою AppleScript є прийнятним, можливо, "все", що залишилося для з'ясування:
Чи можна тимчасово видалити пароль користувача, щоб дозволити розпочати (або відновити) сеанс, не знаючи цього пароля ...?
Чи можна зробити стійкі до помилок AppleScript? Подобається:
- Як сказати, чи видно вікно входу? (можливо,
stat -f%Su /dev/console
може допомогти, оскільки це даєroot
під час відображення вікна входу)
- Як сказати, яке вікно для входу відображається? .
- Позбудьтеся від затримок.
- А що з повідомленням про помилку?
(Примітка для тестування: при використанні спільного доступу до екрана здається, що встановлення переваги при керуванні комп’ютерами: шифрувати паролі та натискання клавіш також зберігає з'єднання лише тоді, коли відображається вікно входу або після успішного входу користувача. При використанні шифрувати всю мережу дані, то моєму Mac потрібно відновлювати з'єднання Screen Sharing щоразу, коли відображається логін або користувач перемикається.)