删除过期的配置文件

时间:2016-05-21 07:35:37

标签: ios iphone macos provisioning-profile ios-provisioning

专门使用终端,如何识别和删除~/Library/MobileDevice/Provisioning Profiles

中过期的配置文件

有没有办法只从终端做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以编写一个shell脚本来循环访问文件,从mobileprovision文件中获取日期,然后根据当前日期进行检查。

#!/bin/sh

for provisioning_profile in ~/Library/MobileDevice/Provisioning\ Profiles/*.mobileprovision;
do
    printf "Checking ${provisioning_profile}... "

    # pull the expiration date from the plist
    expirationDate=`/usr/libexec/PlistBuddy -c 'Print :ExpirationDate' /dev/stdin <<< $(security cms -D -i "${provisioning_profile}")`

    # convert it to a format we can use to see if it is in the past (YYYYMMDD)
    read dow month day time timezone year <<< "${expirationDate}"
    ymd_expiration=`date -jf"%a %e %b %Y" "${dow} ${day} ${month} ${year}" +%Y%m%d`

    # compare it to today's date
    ymd_today=`date +%Y%m%d`

    if [ ${ymd_today} -ge ${ymd_expiration} ];
    then
        echo "EXPIRED"
        # rm -f "${provisioning_profile}"
    else
        echo "not expired"
    fi

done

您可以使用security命令和plist buddy从文件中提取ExpirationDate。然后为了简单起见,我只是将该日期转换为易于比较的格式(YYYMMDD),并以相同的格式将其与今天的日期进行比较。我打印出每个的状态。注意:我不执行删除操作,因为我希望您在取消注释删除行之前验证脚本结果。我把它跑在我的身上,扔进了旧的档案。它在我的测试中正确识别了过期的配置文件。