Я пытаюсь написать приложение, используя Applescript в Automator, которое работает на терминале на Mac Air под управлением Sierra. Учетная запись, использующая приложение, имеет установленный родительский контроль, но мне нужно дать им доступ к терминалу для запуска приложения. В конечном счете, мы не хотим, чтобы пользователи аккаунта имели доступ к терминалу. Итак, я пытаюсь найти способ удалить или скрыть псевдоним.

Я могу удалить псевдоним, используя приведенный ниже скрипт, но когда они снова пытаются использовать приложение, оно не работает, потому что терминал больше не доступен:

tell application "System Events" to delete alias "/Path/to/Library/Managed Items/My Applications/Terminal"
end tell

Когда я пытался скрыть псевдоним, как показано ниже, я получаю сообщение об ошибке, утверждающее, что для процесса нельзя установить значение false:

tell application "System Events" 
        set visible of application process "/Path/to/Library/Managed Items/My Applications/Terminal" to false
end tell

Не уверен, смогу ли я загрузить Терминал в начале скрипта, а затем удалить его в конце ИЛИ, если есть способ скрыть псевдоним.

Любые предложения будут ценны!!

Вот весь мой код:

on run {input, parameters}

tell application "System Events"
    key code 21 using option down
end tell --used to deactivate trackpad

tell application "Terminal"
    activate
    tell application "Terminal"
    do script "su <admin account>" --not root
    delay 2
    tell application "System Events"
        keystroke "<password>" & return
        delay 2
        keystroke "sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/" & return --used to disable keyboard
        delay 2
        keystroke "<password>" & return
        delay 2
        keystroke "exit" & return
        delay 2
        tell application "Terminal"
            do script with command "rm -R release.zip; rm -R release; wget https://URL/for/webserver/release.zip; unzip release.zip; rm -rf __MACOSX" in window 1 --deletes old configuration .zip file and folder; downloads new configuration files; unzips new configuration files
            delay 15
        end tell
        tell application "Terminal"
            do script with command "su <admin account>" in window 1
            delay 2
            tell application "System Events"
                keystroke "<password>" & return
                delay 2
                keystroke "sudo kextload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/" & return --reloads keyboard
                delay 2
                keystroke "exit" & return
                delay 2
            end tell
            tell application "Terminal"
                do script with command "release/pc-release-mac.command --config config.properties; exit" in window 1 --Launches print release software
            end tell
        end tell
    end tell
    delay 2
    tell application "Terminal"
        quit
    end tell
end tell
end tell
end tell

tell application "System Events"
    key code 21 using option down
end tell --reactivates trackpad

return input
end run

Любые улучшения будут с благодарностью! Я новичок в написании сценариев, поэтому я запутался в большей части этого.

2 ответа2

1

Прочитав комментарии, опубликованные 8bittree и wch1zpink, я решил изучить использование Applescript для запуска сценариев оболочки. Я смог получить все, что мне было нужно, с помощью простого, простого сценария, который не требует терминала. Моя проблема перед попыткой использования сценария оболочки была в том, что я оставил сценарий по умолчанию в окне. После того, как я удалил его, приведенный ниже код сделал именно то, что мне нужно:

do shell script "rm -R /Users/<account>/release.zip; rm -R /Users/<account>/release; curl -L https://URL/to/webserver/release.zip -o /Users/<account>/release.zip; unzip -o /Users/<account>/release.zip -d /Users/<account>; rm -rf /Users/<account>/__MACOSX; /Users/<account>/release/pc-release-mac.command --config config.properties"

Не требует терминала; не требует отключения клавиатуры; не требует отключения трекпада; не требует, чтобы пароли были жестко закодированы.

Спасибо вам обоим, что дали мне направление !!!

1

Если вы используете команду «do Shell script» в AppleScript, команда будет выполнена без запуска терминала. Вот пример AppleScript «do shell script», который можно попробовать. Обратите внимание, что терминал никогда не запускается.

display dialog (do shell script "curl ifconfig.co") with icon 2 buttons "OK" default button 1 with title "Your Current IP Address Is.." giving up after 5

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .