2012-05-10 13 views
12

Potrzebuję dodać plik .keychain do mojej listy wyszukiwania pęku kluczy dla niektórych automatycznych narzędzi do kompilacji. Obecnie używam security list-keychains polecenie:Dodaj pęku kluczy do listy wyszukiwania?

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

Polecenie to pozwala ci ustawić całą listę wyszukiwania pęk kluczy, ale nie zapewnia sposób wystarczy dodać kolejny pęk kluczy. Zatem dodanie pęku kluczy staje się procesem dwuetapowym.

  1. Run list-breloki i analizować dane wyjściowe
  2. Następnie zrobić coś list-keychains -s ${existing_chains} ${new_keychain}

Chociaż to działa, wydaje się zbyt skomplikowane i wprowadza warunek wyścigu.

Wygląda na to, że open my.keychain doda go do listy wyszukiwania, ale staram się unikać używania komend takich jak open w skryptach lub środowiskach bezgłowych.

Czy istnieje prostszy lub lepszy sposób dodania pęku kluczy do listy wyszukiwania?

Odpowiedz

2

Z jakich automatycznych narzędzi korzystasz? Miałem podobny problem z budowaniem iPhone'a za pomocą Jenkinsa pod tomcat. Próbowałem dodawać pęki kluczy w skrypcie powłoki, ale w najlepszym razie okazało się to bardzo flake.

W końcu rozwiązałem problem, przełączając nasz proces kompilacji na LaunchAgents zamiast LaunchDemons. W ten sposób narzędzia do budowania działają w kontekście użytkownika, a rzeczy stały się bardziej niezawodne.

Czy to jest dla ciebie możliwe? Jeśli tak, mogę podać więcej szczegółów.

+0

Zasadniczo jest to również scenariusz powłoki w dżinsach, ale nadal jest to ogólne pytanie. – amrox

+0

Do którego kontenera należy Jenkins? Kocur? A jaki jest scenariusz uruchomienia? –

0

Nie ma lepszego sposobu, że jestem świadomy - jednak wydaje się, że może create-keychain będą robić to, co chcesz:

security create-keychain -h

powraca:

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

To 2017 i na macos 10.12.4 security create-keychain nadal nie dodaje nowego pęku kluczy do listy wyszukiwania. Oto mój skrypt do dodawania i niszczenia tymczasowych breloków krok po kroku:

#!/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 
Powiązane problemy