В блоге texmate есть отличный учебник Аллана Одгаарда, в котором описано, как использовать утилиту цепочки для ключей из командной строки для извлечения пароля (среди прочего). Я предлагаю прочитать его, а также соответствующие комментарии. Вы можете создать функцию для общего использования, такую как
#!/bin/bash
get_pw () {
security 2>&1 >/dev/null find-generic-password -ga "$1" \
| ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'
}
pass=$(get_pw $1)
echo $pass
Для того чтобы это было выполнено программно, без подтверждения пользователя, вам нужно предоставить бинарному файлу security
(в моей установке 10.11.2 он находится в /usr/bin/security
) доступ к конкретному паролю. Это можно сделать одним из двух способов:
выполнив следующее из терминала
security add-generic-password -a "account name" -s "service name" -T "/usr/bin/security" -U
как описано Дэвидаклендом в его ответе JAMFNation. Примечание: я не смог воспроизвести это с существующим предметом цепочки для ключей (поскольку ответ davidacland предполагает, возможен).
- или -
- использование GUI Keychain Access.app для ручного добавления
security
в список контроля доступа элемента Keychain: GUI Access Keychain -> двойной щелчок по элементу Keychain -> Контроль доступа