OSX: Excluir todos os certificados correspondentes por linha de comando

2

Usando o script de shell para excluir todos os certificados correspondentes.

Eu encontrei uma lista de certificados usando:

security find-certificate -c "certificatename" -a -Z|grep SHA-1|awk '{ print $NF }'

A saída é assim:

$ bash delete-cert.sh 
62D58774F9329FA1F96A2BB0C090130305B879ED
94B149CFDF32BDB1C9C28179FB586291167EC235

Agora, quero executar o comando delete em cada um desses SHA-1 hashes, como posso fazer isso?

sudo security delete-certificate -Z hash

Eu estava fazendo assim,

hashes=$(security find-certificate -c "certificatename" -a -Z|grep SHA-1|awk '{ print $NF }')
for hash in $hashes; do
    echo deleting $hash
    sudo security delete-certificate -Z $hash
done

Mas eu gosto da solução de uma linha por #chaos

    
por karim 02.09.2015 / 13:41

1 resposta

5

Use isto:

security find-certificate -c "certificatename" -a -Z | \
  sudo awk '/SHA-1/{system("security delete-certificate -Z "$NF)}'

awk é chamado com sudo . awk , em seguida, procura a string SHA-1 e chama o comando security delete-certificate com o hash como argumento. Você precisa fornecer a senha sudo apenas uma vez.

    
por 02.09.2015 / 14:02