欢迎各位兄弟 发布技术文章
这里的技术是共享的
jamf 接口 调用 某一个策略 Policy
在 Jamf Pro 中,策略(Policy) 是一种用于在设备上执行特定操作(如安装软件、运行脚本或配置设置)的管理工具。
你可以通过 Jamf Pro API 触发某个策略在目标设备上执行,以下是详细步骤:
scoped
模式调用策略(推荐)(适用于已分配策略的设备)
使用 POST /JSSResource/computercommands/command/{policy_id}/id/{device_id}
触发指定策略。
Jamf Pro 后台路径:Policies
> 选择你的策略 > 查看 URL 中的 id=
(例如 id=5
)。
或通过 API:
bashcurl -X GET \ -H "Authorization: Bearer YOUR_API_TOKEN" \ "https://your-jamf-server.com/JSSResource/policies"
使用 curl
发送 Policy Trigger 命令:
bashcurl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/xml" \ "https://your-jamf-server.com/JSSResource/computercommands/command/PolicyTrigger/id/DEVICE_ID"
DEVICE_ID
是目标设备的 Jamf Pro ID(可在 Devices
列表查询)。
PolicyTrigger
是固定命令,不能修改。
如果策略需要额外参数,可发送 XML:
xml<computer_command> <general> <command>PolicyTrigger</command> </general> <computers> <computer> <id>DEVICE_ID</id> </computer> </computers> </computer_command>
jamf policy
命令(客户端执行)如果你希望 直接在设备终端触发某个策略,可以使用 jamf policy
命令:
bashsudo jamf policy -id POLICY_ID
POLICY_ID
是策略的 Jamf Pro ID(如 5
)。
设备必须安装了 Jamf Pro 客户端(jamf binary
)。
适用场景:
测试策略效果。
手动强制策略执行(无需 API)。
jamf policy
API(适用于所有设备)如果你想 让所有符合条件的设备都重新执行某个策略,可以推送 jamf policy
指令:
bashcurl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/xml" \ -d ' <computer_command> <general> <command>jamf policy</command> <command_contents> <policy_id>5</policy_id> <!-- 替换为你的策略 ID --> </command_contents> </general> <computers> <computer> <id>DEVICE_ID</id> </computer> </computers> </computer_command>' \ "https://your-jamf-server.com/JSSResource/computercommands"
影响:目标设备的 Jamf 客户端会重新评估并执行该策略。
适用场景:批量更新策略,无需等待定期 Check-In。
设备状态 | 执行时间 |
---|---|
在线 | 几分钟内 |
离线 | 下次 Check-In(默认 15 分钟) |
从未执行过该策略 | 立即执行 |
路径:Policies
> 选择策略 > Logs
(查看执行记录)。
或:Devices
> 目标设备 > Management Commands
(查看命令状态)。
macOS:
bashcat /var/log/jamf.log | grep "POLICY_NAME"
iOS(需监管模式):
成功执行后,策略内容(如安装的 App、配置)会生效。
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
API PolicyTrigger | 精准调用策略 | 直接触发,无需等待 | 需设备 ID |
jamf policy -id | 设备本地执行 | 简单快捷 | 需手动操作 |
jamf policy API | 批量重新执行 | 影响范围可控 | 可能需要等待 Check-In |
推荐方法:
单设备操作 → 用 PolicyTrigger
API。
批量触发 → 用 jamf policy
API。
测试调试 → 直接在设备上运行 sudo jamf policy -id X
。
如果有其他疑问,建议查阅 Jamf Pro API 文档 或测试沙盒环境。
jamf policy API 哪里看出批量
在 Jamf Pro 中,jamf policy
API 本身并不直接提供“批量”操作的能力,但可以通过 组合 API 请求 或 调整策略作用范围(Scope) 来实现批量管理。以下是具体方法:
computercommands
API 批量推送策略(真批量)同时让多台设备执行同一个策略(如安装软件、运行脚本)。
避免逐台设备调用 API,提高效率。
bashcurl -X GET \ -H "Authorization: Bearer YOUR_API_TOKEN" \ "https://your-jamf-server.com/JSSResource/computers" | xmllint --format -
从返回数据中提取 <id>
,例如:
xml<computers> <computer> <id>101</id> <name>Mac-01</name> </computer> <computer> <id>102</id> <name>Mac-02</name> </computer> </computers>
xml<computer_command> <general> <command>jamf policy</command> <command_contents> <policy_id>5</policy_id> <!-- 替换为你的策略 ID --> </command_contents> </general> <computers> <computer><id>101</id></computer> <computer><id>102</id></computer> <!-- 添加更多设备 --> </computers> </computer_command>
bashcurl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/xml" \ -d @batch_policy.xml \ <!-- 上述 XML 保存为文件 --> "https://your-jamf-server.com/JSSResource/computercommands"
真正批量:单次 API 调用可覆盖多台设备。
灵活筛选:可通过脚本动态生成设备 ID 列表(如按部门、标签筛选)。
需手动管理设备列表(适合设备数量固定的场景)。
长期管理:希望符合条件的新设备自动执行策略。
动态批量:无需手动维护设备列表。
路径:Policies
> 选择你的策略 > Scope
。
添加目标设备范围(如按 智能组、部门、标签 筛选):
自动执行:策略会根据 Scope
在设备下次 Check-In(默认 15 分钟)时生效。
手动强制刷新:
bash# 在目标设备终端执行(强制立即检查策略) sudo jamf recon
无需额外 API 调用,Jamf Pro 自动管理。
支持动态设备(新加入的设备会自动纳入)。
依赖 Check-In 间隔(非实时)。
scripts
API 批量调用(扩展方案)如果需更复杂的逻辑(如分批执行),可结合 脚本 + API:
编写 Shell/Python 脚本,循环调用 jamf policy
API。
控制并发量(避免瞬时高负载)。
bash#!/bin/bash DEVICE_IDS=(101 102 103) # 替换为你的设备数组 for ID in "${DEVICE_IDS[@]}"; do curl -X POST \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/xml" \ -d "<computer_command><general><command>jamf policy</command></general><computers><computer><id>$ID</id></computer></computers></computer_command>" \ "https://your-jamf-server.com/JSSResource/computercommands" sleep 1 # 避免高频请求 done
需求 | 推荐方法 |
---|---|
一次性批量触发 | 方法 1(computercommands API + 多设备 XML) |
长期自动管理 | 方法 2(策略 Scope + 智能组) |
复杂分批控制 | 方法 3(自定义脚本) |
Jamf Pro 后台:
Policies
> 选择策略 > Logs
(查看执行设备列表)。
设备端:
bashcat /var/log/jamf.log | grep "Policy Name"
直接批量 → 用 computercommands
API 多设备 XML。
自动批量 → 用 策略 Scope
配置智能组。
高级控制 → 结合 脚本循环调用 API。
如果需要进一步优化(如异步处理),可探索 Jamf Pro Classic API 或 Jamf Pro Webhooks 实现事件驱动。