如何在 Mac 上运行以下 Unix 命令(脚本?)?

如何在 Mac 上运行以下 Unix 命令(脚本?)?

我的情况是,我被告知我们用来跟踪库存的程序将于 10 月 31 日停产,但时间很晚。我们有大约 400 台 Mac 电脑,我们必须卸载旧版本(不是必需的,但很合适)并安装最新版本。我希望使用 ARD(Apple Remote Desktop)来实现这一点,但需要先让脚本运行起来。

由于成本原因,Jampf 不是一个选择。我不是 Mac 用户,而且我发现批处理文件是 Windows 独有的。下面是论坛上建议的脚本。我将文件保存在网络共享上。我将展示建议的 Unix 命令以及我尝试使用的命令,并附上明显的替换。

  • 建议:cd /Users/Shared/ ; curl -k -O https://server.hostingyourfiles.com/samanage.zip ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

  • 矿:cd /Users/Shared/ ; curl -k -O smb://word.word/word/word Mac/Samanage_Agent_1.1.72_1.1.37_203_30_installer ; unzip samanage.zip ; /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended ; rm -rf /Users/Shared/samanage/

有了上述内容,当我在终端中粘贴 Unix 命令时出现以下错误:

curl:(67) login denied
curl: (6) Could not resolve host: Mac
unzip: cannot find or open samanage.zip
-bash /users/shared/samanage/smanage_agent app/contents/macos/installbuilder.sh: no such file or directory

它必须是 URL 吗?使用脚本是否是使用 ARD 的最有效方法?我是否能够使用 ARD 而不使用脚本来推送新安装?我应该绕过所有这些并通过电子邮件将安装程序发送给用户吗?请原谅我对这个问题的无知,并提前感谢任何帮助。

答案1

您的脚本版本有两个主要问题:

  • SMB 通常需要身份验证;您收到的第一个错误“curl:(67) login denied”表示此操作在您的情况下失败。请注意,即使客户端已经通过服务器身份验证并挂载了相关文件夹,curl也会尝试自己连接到服务器并通过服务器下载文件。您需要将文件放在访客可访问的地方(HTTP 服务器可能比 SMB 更容易),或者找到将其发送到客户端的其他方法。

    ARD 实际上是一个选项;您可以使用其“复制项目”选项(在“管理”菜单下,或工具栏中的“复制”按钮)将文件从管理站复制到客户端,然后作为单独的步骤运行安装脚本。此外,ARD 可以复制整个文件夹结构,因此您不必发送 .zip 文件然后在每个客户端上展开它;只需发送展开的文件夹即可。

    顺便说一句,该命令还有另一个问题curl:文件名似乎有一个空格,必须用引号引起来或转义,以便将其视为带有空格的单个 URL,而不是两个单独的 URL。

  • 该文件似乎名为“Samanage_Agent_1.1.72_1.1.37_203_30_installer”,但您有一个命令来解压名为“samanage.zip”的文件。请将您正在下载/发送的文件的名称更改为“samanage.zip”,或编辑命令unzip以匹配实际名称。

  • 另一个问题(原始脚本中也有)是,即使某个步骤中途失败,它也会盲目地执行所有步骤。例如,在这种情况下,命令curl失败,因此即使文件名正确,也不会有任何内容unzip,因此尝试运行扩展文件不可能成功...

    除非您有一个更复杂的脚本,可以从错误中恢复,否则通常最好让脚本退出,而不是尝试继续。您可以通过set -e在脚本开头添加命令,或通过使用&&而不是 来连接命令来实现这一点;。该&&选项还允许您使用 添加错误处理程序||

    cd /Users/Shared &&
    curl -k -O https://server.hostingyourfiles.com/samanage.zip &&
    unzip samanage.zip &&
    /Users/Shared/samanage/Samanage_Agent_*.app/Contents/MacOS/installbuilder.sh --mode unattended &&
    rm -rf /Users/Shared/samanage/ ||
    echo "Installation failed on $HOSTNAME"
    

相关内容