Запустите osascript (AppleScript) из launchd / launctl - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь периодически запускать очень простой AppleScript с использованием агента launchd, но он ничего не делает, кроме записи содержимого AppleScript в stdout.

Мой launchd Агент в ~/Library/LaunchAgents/com.nn.test.plist:

<?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.nn.test</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/osascript</string>
      <string>-e</string>
      <string>"display dialog \"Hi\""</string>
    </array>
    <key>RunAtLoad</key>
    <false/>
    <key>Debug</key>
    <true/>
    <key>StartInterval</key>
    <integer>7200</integer>
    <key>StandardErrorPath</key>
    <string>/tmp/test</string>
    <key>StandardOutPath</key>
    <string>/tmp/testout</string>
</dict>
</plist>

Я бегу по:

$ launchctl unload com.nn.test.plist
$ launchctl load com.nn.test.plist
$ launchctl run com.nn.test

Результат cat /tmp/testout

display dialog "Hi"

Пока /tmp/test пусто.

Ожидаемое поведение : диалоговое окно открывается так же, как когда я запускаю команду непосредственно в оболочке (что работает), но, похоже, ничего не происходит. Что я делаю не так и почему я не вижу сообщений об ошибках в журнале ошибок?

Может ли это быть связано с моделью расширенной безопасности Mojave?Разве AppleScript больше не может запускаться из launchd агентов?

1 Ответ

0 голосов
/ 31 января 2019

Я думаю, что вы дважды строковые!

Вам нужно:

    <array>
    <string>/usr/bin/osascript</string>
    <string>-e</string>
    <string>display dialog "Hi"</string>
    </array>

и:

launchctl start com.nn.test
...