Bash

OSX:通過命令行刪除所有匹配的證書

  • May 31, 2017

使用 shell 腳本刪除所有匹配的證書。

我使用以下方法找到了證書列表:

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

輸出是這樣的:

$ bash delete-cert.sh 
62D58774F9329FA1F96A2BB0C090130305B879ED
94B149CFDF32BDB1C9C28179FB586291167EC235

現在,我想對這些SHA-1雜湊中的每一個執行刪除命令,我該怎麼做?

sudo security delete-certificate -Z hash

我是這樣做的,

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

但我喜歡#chaos 的單行解決方案

用這個:

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

awk用 呼叫sudoawk然後搜尋字元串並使用雜湊作為參數SHA-1呼叫命令。security delete-certificate您只需提供sudo一次密碼。

引用自:https://unix.stackexchange.com/questions/227009