2016-05-21 1 views

Répondre

3

Vous pouvez écrire un script shell qui parcourt les fichiers, récupère la date du fichier mobileprovision et la compare à la date actuelle.

#!/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 

Vous pouvez utiliser la commande de sécurité et le compagnon plist pour extraire le fichier ExpirationDate du fichier. Ensuite, pour simplifier, je convertis simplement cette date en un format facilement comparable (AAAAMMJJ) et je le compare à la date du jour dans le même format. J'imprime le statut de chacun. Remarque: je ne fais pas la suppression, car je veux que vous vérifiiez les résultats du script avant de décommenter la ligne de suppression. Je l'ai couru sur le mien, et ai jeté dans un vieux profil. Il a correctement identifié le profil expiré dans mes tests.

+0

B R I L L I A N T! ! ! Merci – SpaceDog

+1

juste une petite touche à votre script, la ligne 'rm -f $ {provisioning_profile}' devrait être en fait 'rm -f" $ {provisioning_profile} "' parce que le fichier de profil de provisionnement contient des espaces et sans guillemets le fichier ne sera pas être supprimé. – SpaceDog

+1

Oui, la plupart d'entre eux, lorsqu'ils sont installés via Xcode, ne contiennent pas d'espaces, mais je les ai mis à jour au cas où les gens les copieraient manuellement ou utiliseraient quelque chose comme fastlane. Merci d'avoir suivi! – wottle