macOS可通过Automator结合Shell脚本与AppleScript实现USB设备接入/拔出自动响应:插入时监听/Volumes目录,通过文件名和类型过滤后执行校验、备份等操作;拔出前可用快速操作调用diskutil安全卸载;还可依设备厂商ID或卷标差异化处理。
macos 本身不提供直接管理 usb 设备插拔的图形化界面(比如禁用/启用某个 usb 端口或设备),但你可以用 automator 搭配系统命令和 applescript,实现“usb 设备接入/拔出时自动响应”的运维逻辑——重点不是控制硬件开关,而是感知连接状态、触发预设动作,比如:自动挂载校验、启动调试脚本、弹窗提醒、备份设备内容、或强制卸载避免异常断开。
USB 插入时自动执行任务(文件夹操作 + Shell 判断)
这是最实用也最稳定的方案:把 USB 存储设备(如 U 盘、移动硬盘)挂载后的路径作为监控目标,用“文件夹操作”类型工作流静默监听。
- 新建 Automator 文稿 → 选择“文件夹操作”
- 点击“选择文件夹”,定位到 /Volumes(所有挂载卷的统一入口)
- 拖入“过滤 Finder 项目”操作,设置条件为:“文件名” “不包含” “.”(排除 .Trashes、.fseventsd 等隐藏项),再加一条:“种类” “是” “文件夹”
- 接一个“运行 Shell 脚本”操作,Shell 选 /bin/bash,传入参数设为 “作为自变量”,脚本内容示例:
if [ -f "$vol/.usb-trigger" ]; then
echo "✅ 已识别可信设备: $(basename "$vol")" | osascript -e 'display notification "{}" with title "USB 设备接入"'
# 这里可追加 rsync 备份、md5 校验、日志记录等
fi
done
保存后,右键 /Volumes 文件夹 → “配置文件夹操作” → 勾选该工作流。之后只要 U 盘插入且根目录含 .usb-trigger 文件,就会自动触发通知与后续动作。
USB 拔出前安全卸载(快速操作 + AppleScript)
避免“强行拔出”导致数据损坏,可做一个一键安全弹出服务,比手动右键更高效。
- 新建“快速操作”,接收“文件或文件夹”
- 拖入“运行 AppleScript”,粘贴以下脚本:
set volPath to POSIX path of (item 1 of input)
do shell script "diskutil unmount '" & volPath & "'" & " 2>/dev/null"
display notification "已尝试安全卸载" with title (name of (info for (item 1 of input) as alias))
return input
end run
保存为“安全弹出 USB 卷”。之后在访达中右键任意挂载卷(如“UNTITLED”),选择该快速操作,即可调用 diskutil unmount 执行软卸载,并弹出提示。
识别特定设备并差异化处理(变量 + 条件分支)
如果你有多个用途固定的 USB 设备(如开发板、加密狗、测试摄像头),可通过设备厂商 ID 或卷标做区分。
- 在“文件夹操作”流程中,先用 Shell 获取新挂载卷的详细信息:
再用“设定值为变量”捕获输出,接着用“如果”操作判断变量是否含特定字符串(如“Raspberry Pi”或“YubiKey”),然后分流执行不同动作:启动串口终端、运行证书校验脚本、或打开特定调试面板。
这种模式不需要第三方工具,完全基于 macOS 原生能力,稳定、低侵入、易维护。


















