在 Jamf Self Service 里维护多个脚本时,如果它们之间有一部分「共同的代码」,常见的做法有以下几种:
🔹 方法 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 }
在每个 Jamf 脚本里用
source
引入:#!/bin/bash source /usr/local/jamf-shared/common.sh log "开始执行脚本" cleanup
公共脚本可通过 一个 Jamf Policy 部署到所有目标机器,放到固定路径。
🔹 方法 2:用 Jamf 参数传递(适合小片段)
Jamf Script 里支持 Parameter Values ($4, $5 …)。
可以把常用函数/命令定义成一个参数传进去。
但这种方式不适合大块代码,主要用于统一的路径、命令行参数。
🔹 方法 3:用 Extension Attribute 或 Configuration Profile
如果公共代码只是一些变量(比如服务器地址、版本号),可以存在 EA 或配置文件里。
脚本只需要
defaults read
或jamf 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 里调用的脚本)?