У меня есть длинный и сложный bash-скрипт, который работает нормально, но я пытаюсь автоматизировать процесс развертывания, и на этом этапе я в замешательстве.
Я могу заставить скрипт работать как LaunchAgent без проблем, но, конечно, это происходит в фоновом режиме при загрузке. Поэтому у меня есть пауза в начале скрипта, где я могу нажать любую кнопку, если мне нужно прервать скрипт.
Проблема в том, что мне нужно открыть скрипт в окне терминала, чтобы я мог нажать кнопку, чтобы отменить или продолжить его. Здесь начинается моя проблема.
В скрипте много команд sudo. Я создал ниже .plist
и я могу нормально загрузить его вручную. Работает и загружает скрипт, и все работает. Тем не менее, он ничего не делает при загрузке и просто выходит с кодом ошибки 1 в консоли.
Я пытался поместить его в /Library/LaunchAgents
и /Library/LaunchDaemons
. По сути, ему нужно открыть окно терминала от имени пользователя root, чтобы все команды в сценарии выполнялись от имени пользователя root без необходимости вручную вводить пароль.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.deecies.first</string>
<key>ProcessType</key>
<string>Interactive</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>-a</string>
<string>terminal</string>
<string>/Users/admin/first-boot.command</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Я попытался указать /usr/bin/open
и полный путь к Terminal.app
, но безрезультатно. Я попытался сначала добавить строку sudo и /usr/bin/sudo
но тоже ничего.
Мне удалось открыть окно терминала, когда оно было помещено в /Library/LaunchAgents
, однако, по- видимому , оно не открывает ни терминал, ни сценарий от имени пользователя root, поскольку я получаю "разрешение запрещено" для всех пользователей. Команды в сценарии, которые требуют sudo.