欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

jamf self service 某一些脚本 包含 共同的代码,怎么包含 jamf脚本工作共享代码 AG chatgpt 有大用 有大大用

Jamf Self Service 里维护多个脚本时,如果它们之间有一部分「共同的代码」,常见的做法有以下几种:


🔹 方法 1:用外部共享脚本文件

  1. 把公共代码写成一个 独立的脚本文件,比如 /usr/local/jamf-shared/common.sh

    #!/bin/bash # common.sh - 公共函数和变量 log(){    echo "$(date '+%Y-%m-%d %H:%M:%S') $1" } cleanup(){    rm -rf /tmp/mytemp }


  2. 在每个 Jamf 脚本里用 source 引入:

    #!/bin/bash source /usr/local/jamf-shared/common.sh log "开始执行脚本" cleanup


  3. 公共脚本可通过 一个 Jamf Policy 部署到所有目标机器,放到固定路径。


🔹 方法 2:用 Jamf 参数传递(适合小片段)

  • Jamf Script 里支持 Parameter Values ($4, $5 …)

  • 可以把常用函数/命令定义成一个参数传进去。

  • 但这种方式不适合大块代码,主要用于统一的路径、命令行参数。


🔹 方法 3:用 Extension Attribute 或 Configuration Profile

  • 如果公共代码只是一些变量(比如服务器地址、版本号),可以存在 EA 或配置文件里。

  • 脚本只需要 defaults readjamf getComputerAttribute 取值。


🔹 方法 4:把公共逻辑放进一个独立 Policy       # OK    有大用

  • 把公共代码抽成一个 Policy,比如“初始化环境”。

  • 其他脚本在运行前调用:

    sudo jamf policy -event init_env

  • 或者 sudo jamf policy -id   112      #   112 就 事件的id


  • 这样代码只维护在一个地方。


推荐实践

  • 如果是函数/逻辑 → 方法 1(source 公共文件)。

  • 如果是变量/配置 → 方法 3(EA 或配置文件)。

  • 如果是流程步骤 → 方法 4(自定义触发事件)。


要不要我帮你写一个 完整示例(比如公共 common.sh + Self Service 里调用的脚本)?


您说:
ChatGPT 说:

好,我给你写一个完整的示例:


🎯 场景

  • 你有多个 Jamf Self Service 脚本,它们都需要用到一些公共函数(比如日志函数、清理函数)。

  • 我们把公共函数抽出来放在一个 common.sh 文件里,通过 Jamf 部署到所有 Mac。

  • Self Service 脚本再去 source 这个公共脚本即可。


① 公共脚本 common.sh

保存为 /usr/local/jamf-shared/common.sh (路径可以自定义,但建议统一)。

#!/bin/bash # # common.sh - 公共函数库 # 日志函数 log(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" } # 错误处理函数 error_exit(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1"    exit 1 } # 清理函数 cleanup(){    rm -rf /tmp/mytemp    log "已清理临时文件" }

部署方法:

  1. 在 Jamf Pro 创建一个 Policy,脚本里写:

    #!/bin/bash mkdir -p /usr/local/jamf-shared cat > /usr/local/jamf-shared/common.sh <<'EOF' #!/bin/bash log(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" } error_exit(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1"    exit 1 } cleanup(){    rm -rf /tmp/mytemp    log "已清理临时文件" } EOF chmod 755 /usr/local/jamf-shared/common.sh


  2. 设置为 Recurring Check-in一次性执行,确保所有 Mac 都有这个文件。


② Self Service 脚本示例 1

比如安装某个软件:

#!/bin/bash # Self Service 脚本 1 - 安装软件 # 引入公共函数 source /usr/local/jamf-shared/common.sh log "开始安装 Google Chrome..." # 示例安装逻辑 if ! /usr/bin/which google-chrome &>/dev/null; then    log "下载并安装 Chrome..."    # 这里写 curl + installer 逻辑 else    log "Chrome 已经安装" fi cleanup log "安装脚本完成"

③ Self Service 脚本示例 2

比如清理缓存:

#!/bin/bash # Self Service 脚本 2 - 清理缓存 # 引入公共函数 source /usr/local/jamf-shared/common.sh log "开始清理缓存..." rm -rf ~/Library/Caches/* rm -rf /Library/Caches/* cleanup log "缓存清理完成"

④ 好处

  • 公共逻辑只写在 common.sh,维护一次即可。

  • 所有 Self Service 脚本都能共享函数。

  • 如果后续要新增函数(比如检测网络、获取 Jamf 计算机 ID),只需要修改 common.sh,所有脚本自动更新。


要不要我再帮你扩展一下 common.sh,加一些 常用函数模板(比如获取当前用户、检测网络、获取 Jamf Computer ID)?

好,我给你写一个完整的示例:


🎯 场景

  • 你有多个 Jamf Self Service 脚本,它们都需要用到一些公共函数(比如日志函数、清理函数)。

  • 我们把公共函数抽出来放在一个 common.sh 文件里,通过 Jamf 部署到所有 Mac。

  • Self Service 脚本再去 source 这个公共脚本即可。


① 公共脚本 common.sh

保存为 /usr/local/jamf-shared/common.sh (路径可以自定义,但建议统一)。

#!/bin/bash # # common.sh - 公共函数库 # 日志函数 log(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" } # 错误处理函数 error_exit(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1"    exit 1 } # 清理函数 cleanup(){    rm -rf /tmp/mytemp    log "已清理临时文件" }


部署方法:

  1. 在 Jamf Pro 创建一个 Policy,脚本里写:

    #!/bin/bash mkdir -p /usr/local/jamf-shared cat > /usr/local/jamf-shared/common.sh <<'EOF' #!/bin/bash log(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" } error_exit(){    echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1"    exit 1 } cleanup(){    rm -rf /tmp/mytemp    log "已清理临时文件" } EOF chmod 755 /usr/local/jamf-shared/common.sh


  2. 设置为 Recurring Check-in一次性执行,确保所有 Mac 都有这个文件。


② Self Service 脚本示例 1

比如安装某个软件:

#!/bin/bash # Self Service 脚本 1 - 安装软件 # 引入公共函数 source /usr/local/jamf-shared/common.sh log "开始安装 Google Chrome..." # 示例安装逻辑 if ! /usr/bin/which google-chrome &>/dev/null; then    log "下载并安装 Chrome..."    # 这里写 curl + installer 逻辑 else    log "Chrome 已经安装" fi cleanup log "安装脚本完成"



③ Self Service 脚本示例 2

比如清理缓存:

#!/bin/bash # Self Service 脚本 2 - 清理缓存 # 引入公共函数 source /usr/local/jamf-shared/common.sh log "开始清理缓存..." rm -rf ~/Library/Caches/* rm -rf /Library/Caches/* cleanup log "缓存清理完成"



④ 好处

  • 公共逻辑只写在 common.sh,维护一次即可。

  • 所有 Self Service 脚本都能共享函数。

  • 如果后续要新增函数(比如检测网络、获取 Jamf 计算机 ID),只需要修改 common.sh,所有脚本自动更新。


要不要我再帮你扩展一下 common.sh,加一些 常用函数模板(比如获取当前用户、检测网络、获取 Jamf Computer ID)?




普通分类: