Как я могу запустить следующую команду Unix (скрипт?) На Mac?

346
cj riveron

Я нахожусь в ситуации, когда мне очень поздно сообщили, что у программы, которую мы используем для отслеживания запасов, будет EOL 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 без сценария? Должен ли я обойти все это и отправить инсталлятор по электронной почте пользователям? Извините за незнание этой темы и заранее спасибо за любую помощь.

0

1 ответ на вопрос

1
Gordon Davisson

В вашей версии скрипта есть две основные проблемы:

  • 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" 

Похожие вопросы