2012-05-10 3 views
12

Мне нужно добавить файл .keychain в список поиска ключей для некоторых автоматизированных инструментов сборки. В настоящее время я использую security list-keychains команду:Добавить брелок в список поиска?

list-keychains [-h] [-d user|system|common|dynamic] [-s [keychain...]] 
     Display or manipulate the keychain search list. 

Эта команда позволяет вам установить весь список поиска брелка, но это не дает возможность просто добавить еще один брелок. Поэтому добавление брелка становится двухэтапным процессом.

  1. Выполнить список-брелки и разобрать вывод
  2. Затем сделать что-то вроде list-keychains -s ${existing_chains} ${new_keychain}

Хотя это работает, это кажется слишком сложным и вводит состояние гонки.

Также кажется, что open my.keychain добавит его в список поиска, но я стараюсь избегать использования таких команд, как open, в сценариях или безголовых средах.

Есть ли более простой или лучший способ добавить брелок в список поиска?

ответ

2

Какие автоматические инструменты вы используете? У меня была аналогичная проблема с построением iPhone, используя Jenkins под tomcat. Я попытался добавить keychains в сценарий оболочки, но в лучшем случае он оказался очень пушистым.

В конце концов, я столкнулся с проблемой, переключив процесс сборки на LaunchAgents вместо LaunchDemons. Таким образом, инструменты сборки запускаются в пользовательском контексте, и все становится намного надежнее.

Возможно ли это для вас? Если да, я могу предоставить более подробную информацию.

+0

Это в основном для скрипта оболочки в jenkins, но это все еще общий вопрос. – amrox

+0

В каком контейнере работает Jenkins? Кот? И для чего это сценарий запуска? –

0

Существует не лучший способ, который я знаю - однако кажется, что, возможно create-keychain будет делать то, что вы хотите:

security create-keychain -h

возвращается:

Usage: create-keychain [-P] [-p password] [keychains...] 
    -p Use "password" as the password for the keychains being created 
    -P Prompt the user for a password using the SecurityAgent 
Use of the -p option is insecure 
     Create keychains and add them to the search list. 
4

Это 2017 и на macos 10.12.4 security create-keychain по-прежнему не добавляет новый список ключей в список поиска. Вот мой скрипт для поэтапного добавления и уничтожения временных цепочек ключей:

#!/bin/bash -e 

uuid="$(uuidgen)" 

echo "New Keychain name: $uuid" 

keychains=$(security list-keychains -d user) 

keychainNames=(); 

for keychain in $keychains 
do 
    basename=$(basename "$keychain") 
    keychainName=${basename::${#basename}-4} 
    keychainNames+=("$keychainName") 
done 

echo "User keychains on this machine: ${keychainNames[@]}"; 




read -p "Enter to create keychain" 
security -v create-keychain -p test123 $uuid 

read -p "Enter to add keychain to searchlist" 
security -v list-keychains -s "${keychainNames[@]}" $uuid 

read -p "Enter to unlock keychain" 
security -v unlock-keychain -p test123 $uuid 

read -p "Enter to import certificate" 
security -v import build-assets/certficate.p12 -k $uuid -P certificate_password 

read -p "Enter to delete keychain" 
security -v delete-keychain $uuid 
Смежные вопросы