You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过macOS终端挂载SMB文件夹并批量执行文件拷贝与安装操作?

如何通过macOS终端挂载SMB文件夹并批量执行文件拷贝与安装操作?

我来帮你梳理下问题所在,一步步搞定这个批量部署Adobe包的需求~

首先看你挂载命令的两个关键错误:

  • 挂载点路径少了根目录的/:你写的usr/local/Installers是相对路径,终端会从当前目录找这个路径,而正确的绝对路径应该是/usr/local/Installers,这是导致“找不到文件或目录”的核心原因之一。
  • SMB URL格式错误:你用分号分隔服务器和用户名的写法不对,标准的SMB URL格式是smb://[用户名:密码@]服务器地址/共享路径。如果是域用户,需要把域名和用户名用反斜杠分隔(终端里要转义成两个\\)。

修正后的挂载命令示例

假设你的用户名是corp-admin,密码是yourPass123,域名为COMPANY,服务器地址是servername.domain.int,共享路径是Software/APPLEDMG,那么正确的挂载命令应该是:

# 域用户版本
mount_smbfs smb://COMPANY\\corp-admin:yourPass123@servername.domain.int/Software/APPLEDMG /usr/local/Installers

# 非域用户版本
mount_smbfs smb://corp-admin:yourPass123@servername.domain.int/Software/APPLEDMG /usr/local/Installers

完整批量部署脚本流程

按照你需要的操作顺序,我整理了一套完整的脚本逻辑,适合批量推送给100台Mac:

  1. 创建挂载点(确保存在)
# 用-p参数自动创建父目录,避免报错
sudo mkdir -p /usr/local/Installers
# 设置合适的权限,避免挂载时权限不足
sudo chmod 755 /usr/local/Installers
  1. 挂载SMB共享
# 把配置项放在变量里,方便批量修改
SMB_USER="corp-admin"
SMB_PASS="yourPass123"
SMB_SERVER="servername.domain.int"
SMB_SHARE="Software/APPLEDMG"
MOUNT_POINT="/usr/local/Installers"

# 执行挂载
mount_smbfs smb://${SMB_USER}:${SMB_PASS}@${SMB_SERVER}/${SMB_SHARE} ${MOUNT_POINT}

注意:如果密码包含特殊字符(比如!@#$),需要用URL编码替换(例如!换成%21),或者提前把密码存入Mac钥匙串,用security find-generic-password -s "你的服务器名" -w读取,避免明文泄露。

  1. 拷贝安装包到本地
# 把共享里的Adobe包拷贝到本地/Users/Shared目录(权限更友好,适合静默安装)
sudo cp -R ${MOUNT_POINT}/Adobe_CC_Package.pkg /Users/Shared/
# 如果是.app格式的包,同样用-R递归拷贝
# sudo cp -R ${MOUNT_POINT}/Adobe_CC_Installer.app /Users/Shared/
  1. 静默安装包
# 用installer命令静默安装,-target /表示安装到系统盘
sudo installer -pkg /Users/Shared/Adobe_CC_Package.pkg -target /
  1. 卸载共享并清理
# 卸载SMB挂载点
umount ${MOUNT_POINT}
# 可选:如果以后不需要这个挂载点,可以删除
# sudo rmdir ${MOUNT_POINT}
# 删除本地的安装包,释放空间
sudo rm /Users/Shared/Adobe_CC_Package.pkg

额外提醒

  • 因为你是用本地管理员账号执行,确保sudo命令不需要交互式输入密码(可以提前配置sudoers文件,或者通过JAMF推送带权限的脚本)。
  • 批量执行前,先在单台Mac上测试脚本,确认挂载、拷贝、安装全流程正常,避免批量出问题。

备注:内容来源于stack exchange,提问作者Tried_to_be_a_Coder

火山引擎 最新活动