Вкладка конфиденциальности с использованием AppleScript
Я пытаюсь получить доступ к вкладке «Конфиденциальность» -> «Доступность» с помощью Applescript. Может кто-нибудь мне помочь? Мне нужно отобразить список всех программ в разделе Специальные возможности, Камера, Микрофон, Фото и так далее. Сам запрос и вывод в терминале с использованием osascript -e
Думаю, но не правильно
osascript -e 'tell application "System Events" to get the value of static text 1 of UI element 1 of rows of table 1 of scroll area 1 of group 1 of tab group 1 of window 1 of application process "System Preferences"'
2 ответа
Необходимо исключить взаимодействие с GUI.
Тестирование с удаленной системой под управлением macOS Big Sur 11.6 и проверка [√] Разрешить полный доступ к диску для удаленных пользователей в Системных настройках > Общий доступ > Удаленный вход в удаленной системе , затем пример кода сценария оболочки, выполненного в Терминале в локальной системе в а
ssh
сессия на удаленной системе даст вам необработанный дамп , что перечислены в разделе доступности в System Preferences > Безопасность и конфиденциальность > Конфиденциальность без необходимости пользовательского интерфейса сценариев с AppleScript .
sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'SELECT client FROM access WHERE service="kTCCServiceAccessibility";'
В тестовой системе его результат был:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Support/AEServer
com.apple.AccessibilityInspector
com.apple.Automator
com.apple.ScriptEditor2
com.apple.Terminalcom.latenightsw.ScriptDebugger8
Однако, если вам действительно нужно использовать AppleScript, вы можете сказать, что вам нужен красивый вывод . Другими словами, использование сценария AppleScript, сохраненного как сценарий оболочки с использованием
#!//usr/bin/osascript
притон выход на одной и той же удаленной системе будет , например:
AEServer, Accessibility Inspector, Automator, Script Editor, Terminal, Script Debugger
Пример кода AppleScript :
#!//usr/bin/osascript
set theAccessibilityList to paragraphs of (do shell script "sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'SELECT client FROM access WHERE service=\"kTCCServiceAccessibility\";'")
set theAccessibilityApplicationNamesList to {}
repeat with thisItem in theAccessibilityList
if thisItem starts with "/" then
set shellCommand to (do shell script "f=" & quoted form of thisItem & "; echo ${f##*/}")
set end of theAccessibilityApplicationNamesList to shellCommand
else
try
set end of theAccessibilityApplicationNamesList to the name of application id thisItem
end try
end if
end repeat
return theAccessibilityApplicationNamesList
Примечания:
Я создал, сохранил и сделал исполняемым файлом пример кода AppleScript , показанный выше, в локальной системе, а затем скопировал его из локальной системы в удаленную, используя
scp
.
Примечание. Пример кода AppleScript является именно таким, и без какой-либо включенной обработки ошибок не содержит какой-либо дополнительной обработки ошибок, которая может быть уместной. Обязанность пользователя - добавить любую обработку ошибок, которая может быть уместной, необходимой или желаемой. Посмотрите на заявления и заявления в . См. Также « . Кроме того, использование команды может потребоваться между событиями , в случае необходимости, например
,Ьгу ошибки руководстве по языку AppleScriptРабота с ошибками»задержки delay 0.5
, С значением от задержки устанавливается соответствующим образом .
Вы должны избегать вложенных кавычек следующим образом. И активируйте Системные настройки.
osascript -e "
tell application id \"com.apple.systempreferences\"
activate
reveal anchor named \"Privacy_Accessibility\" in pane id \"com.apple.preference.security\"
end tell"