Вставьте пароль с AppleScript - PullRequest
1 голос
/ 22 мая 2011

Привет, ребята. Работая на Mac OSX 10.6, Моя «проблема» заключается в том, что мне нужен безопасный пароль для моей учетной записи пользователя, но я не хочу вставлять его всякий раз, когда процессу требуются права администратора.

Я использую Автопилот, и думаю, что это лучший способ ввода, так что я могу 1 для ввода используйте простой яблочный скрипт, 2 использовать скрипт оболочки с "osascript ..." 3 запустите скомпилированное приложение 4 использовать средство расширения текста в Autopilot (в данном случае, похоже, не работает)

Сценарий, который у меня пока есть:

    set the clipboard to "FooBar"
    set resultAnything to the clipboard as text

Когда я выполняю в редакторе сценариев, мой результат "FooBar" Но я не могу заставить его работать где-либо еще.

Я не могу использовать

    set the clipboard to "FooBar"
    tell application "System Events"
    keystroke "v" using command down
    end tell

Поскольку диалоговое окно ввода пароля, похоже, не принимает метод команда + v вставка.

Любая помощь? Кстати, перед тем, как отправлять этот вопрос, я обыскивал сеть и stackoverflow, поэтому извините, если я пропустил что-либо уже опубликованное.

Спасибо

Ответы [ 2 ]

10 голосов
/ 23 мая 2011

С точки зрения безопасности, вероятно, лучше хранить ваш пароль в цепочке ключей для входа и извлекать его оттуда, когда вам это нужно. (Таким образом, вы должны войти в систему, чтобы пароль был доступен. Если вы просто сохраните пароль в appleScript, он будет доступен любому, кто имеет доступ к файлу applecript.)

Попробуйте следующее:

  1. Открытый доступ к брелку (/ Приложения / Утилиты)
  2. Нажмите кнопку «+» в нижней части окна, когда выбрана цепочка для ключей входа в систему
  3. Введите имя элемента цепочки для ключей, имя учетной записи и пароль вашего сервера. Вам снова понадобится название предмета брелка.
  4. Создайте новый Applescript, содержащий следующий код, заменив myKeyname именем элемента цепочки для ключей
  5. Выберите «Всегда разрешать» и «Разрешать» при первом запуске сценария. Это позволит Keychain Access автоматически получать пароль при входе в систему.

код:

set keyName to "myKeyname" -- replace myKeyname with the Keychain Item Name from step 3
tell application "Keychain Scripting"
    tell keychain "login.keychain"
        set myPass to password of (some key whose name is keyName)
    end tell
end tell
tell application "System Events"
    keystroke myPass
end tell

Кредиты:

3 голосов
/ 23 мая 2011

tell app "System Events" to keystroke "securepassword" должно работать, по крайней мере, если пароль - буквенно-цифровой.(И вы не вызываете скрипт, удерживая клавиши-модификаторы.)

...