OSX:通过命令行删除所有匹配的证书

kar*_*rim 5 command-line osx security bash awk

使用 shell 脚本删除所有匹配的证书。

我使用以下方法找到了证书列表:

security find-certificate -c "certificatename" -a -Z|grep SHA-1|awk '{ print $NF }'
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

$ bash delete-cert.sh 
62D58774F9329FA1F96A2BB0C090130305B879ED
94B149CFDF32BDB1C9C28179FB586291167EC235
Run Code Online (Sandbox Code Playgroud)

现在,我想对每个SHA-1散列运行删除命令,我该怎么做?

sudo security delete-certificate -Z hash
Run Code Online (Sandbox Code Playgroud)

我是这样做的,

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
Run Code Online (Sandbox Code Playgroud)

但我喜欢#chaos 的单行解决方案

cha*_*aos 7

用这个:

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

awk用 调用sudo。awk然后搜索字符串SHA-1并security delete-certificate使用散列作为参数调用命令。您只需提供sudo一次密码。