python安装.mobileprovision file

import os
import re
import shutil
import subprocess
from argparse import ArgumentParser

# mobileprovision system root
provision_root = os.path.join(os.environ["HOME"], "Library/MobileDevice/Provisioning Profiles")

def get_file_path_list(folder_path, pattern):
    output_list = []
    for root, _, files in os.walk(folder_path):
        for file_name in files:
            if file_name.endswith(pattern):
                output_list.append(os.path.join(root, file_name))
    return output_list     

def get_file_name_list(folder_path, pattern):
    output_list = []
    for root, _, files in os.walk(folder_path):
        for file_name in files:
            if file_name.endswith(pattern):
                output_list.append(file_name)
    return output_list  

def is_file_exists(file_path):
    return os.path.isfile(file_path) or os.path.islink(file_path)

def is_dir_exists(dir_path):
    return os.path.isdir(dir_path)

#提高权限
if is_dir_exists(provision_root):
    os.chmod(provision_root, 0o0777)
else:
    os.makedirs(provision_root, mode=0o777, exist_ok=True)


#核心代码,这一行定义了一个 shellCommod 变量,用于构建一个包含两个 grep 命令的 shell 命令。这个命令会首先查找包含字符串"UUID"的行以及其后一行,然后通过管道将结果传递给第二个 grep 命令。第二个 grep 命令使用正则表达式'[-A-Z0-9]\\{36\\}'来匹配一个36个字符长度的UUID(包含大写字母、数字和破折号)。并将其移动到Library/MobileDevice/Provisioning目录
def install_mobile_provision(mobile_provision_path):
    if not is_file_exists(mobile_provision_path):
        print(f"error:mobileprovision not exists:{mobile_provision_path}")
        return
    print(f">>install mobileprovision from:{mobile_provision_path}")
    shellCommod = "grep UUID -A1 -a " + mobile_provision_path + " | grep -io '[-A-Z0-9]\\{36\\}'"
    uuid = subprocess.check_output(shellCommod, shell=True).strip().decode("ascii")
    print(f">>install uuid={uuid}")
    dest_path = os.path.join(provision_root, f"{uuid}.mobileprovision")
    if not is_file_exists(dest_path):
        shutil.copy(mobile_provision_path, dest_path)

def get_current_installed_mobile_provisions():
    print("===print all mobileprovisions on this machine===")
    for file_name in get_file_name_list(provision_root, ".mobileprovision"):
        print(f">{file_name}")

def install_all_mp(base_folder):
    print("===install *.mobileprovision from P4===")
    for file_path in get_file_path_list(base_folder, ".mobileprovision"):
        install_mobile_provision(file_path)
    get_current_installed_mobile_provisions()

if __name__ == '__main__':
    parser = ArgumentParser()
    parser.add_argument(
        "-path",
        "--search-path",
        help="mobileprovision search path",
        dest="base_folder",
        default="",
    )
    options = parser.parse_args()
    install_all_mp(options.base_folder)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值