Applescript, чтобы скрыть приложение / псевдоним

455
krees

Я пытаюсь написать приложение, используя 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   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 

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

0
Похоже, что это может быть [проблема XY] (https://meta.stackexchange.com/q/66377/335435). Для этого приложения, которое вы запускаете, вы просто используете Terminal для его запуска или вам действительно нужен Terminal для взаимодействия с ним? И нужно ли вам запретить пользователям использовать Терминал или * shell * (например, Bash)? 8bittree 6 лет назад 0
В настоящее время он взаимодействует с терминалом, но я не против запуска bash. Я просто не знаком с этим. krees 6 лет назад 0

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

1
wch1zpink

Если вы используете команду «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 
Предыстория проекта. Я пытаюсь установить печатную станцию ​​на Mac Air, которая будет использоваться в моем школьном округе. Я не хочу, чтобы конечные пользователи могли остановить выполнение сценария, поэтому я отключил клавиатуру и трекпад во время выполнения сценария. Я использую wget для загрузки файлов конфигурации с нашего веб-сервера, потому что мне не удалось заставить curl работать должным образом; скачанный файл не распаковывается правильно. Я разместил весь сценарий внизу моего оригинального вопроса. krees 6 лет назад 0
1
krees

Прочитав комментарии, опубликованные 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" 

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

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

Если вы нашли, что ответы людей на ваши вопросы были полезны или полезны, просто поблагодарите их, высказав свои ответы. wch1zpink 6 лет назад 0

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