Як перейменувати в діалоговому вікні права адміністратора?


4

Я використав команду.

/usr/bin/osascript -e 'do shell script "echo hello args 2>&1 etc" with administrator privileges'

Вона запитує пароль, кажучи, що osascript хоче внести зміни. Я хочу, як я зміню слово . \ t ?

Відповіді:


5

Я знайшов набагато кращий спосіб зробити це, копаючись через документ Applescript на сайті розробника Apple. Я знайшов цю ноту для випуску Яблука в MacOS 10.10

Він говорить:

do shell script can now specify a custom prompt to use in the password dialog. [15194980]

Проте, це нехтує сказати як Ви можете це зробити. Після деяких здогадок, я зрозумів, що є prompt пункт, який дозволяє замінити osascript wants to make changes... з тим, що ви хочете при використанні do shell script...with administrator privileges у скрипті, викликаному osascript. Наприклад:

osascript -e 'do shell script "ls -l" with prompt "The Great And Powerful OZ " with administrator privileges'

генерує діалогове вікно, яке виглядає так: enter image description here

Я сподіваюся, що це допоможе комусь.


Ого. Я шукав це цілий день. Це загальна заощадження життя.
rubynorails

2

Всі вищезазначені методи потребують прав адміністратора, але якщо ви намагаєтеся це зробити як частина сценарію bash, який потрібно розповсюджувати, не вимагаючи адміністративних привілеїв або додаткових налаштувань, ви можете зробити щось подібне:

TMP=$(mktemp -d)
pushd "$TMP" > /dev/null 2>&1
/usr/bin/osacompile -e 'do shell script "echo hello args 2>&1 etc" with administrator privileges' -o 'My Cool Name.app'
'My Cool Name.app/Contents/MacOS/applet'
popd
rm -rf "$TMP"

Це створить тимчасовий каталог, скомпілює скрипт як аплет, виконає його, а потім видалить тимчасовий каталог і аплет.


Я роблю точно що ... але я також хочу повернути значення з мого AppleScript. Я пробував помилку, повернув і журнал, які всі повертають значення в редакторі сценаріїв, але не впливають на $? в оболонці. Якщо я використовую JavaScript, я можу отримати значення, що повертаються, але тоді діалогове вікно має "osascript" у ньому замість "My Cool Name". Будь-які ідеї?
Eric

0

Припускаючи, що El Capitan або Sierra встановлено, спочатку відключіть SIP і знову завантажиться до основної системи.

Відкрийте термінал і введіть:

sudo ln /usr/bin/osascript /usr/bin/butterfly

Увімкніть SIP знову.

Тепер метелик попросить внести зміни після введення

/usr/bin/butterfly -e 'do shell script "echo hello args 2>&1 etc" with administrator privileges'

Замість метелик можна використовувати майже будь-яке інше ім'я. Ім'я не повинно бути назвою виконуваного файлу, що вже існує на вашому Mac (особливо це не повинен бути вже існуючим у вашій PATH).

Тому ls або diskutil це великий NoNo але necyria_bellona нормально.


Це не працює для томів APFS (High Sierra та пізніших версій), оскільки жорсткі посилання не існують у цій файловій системі.


Ви також можете просто зробити жорстке посилання на місце, яке не потребує використання sudo або вимкнення SIP. Потім використовуйте шлях жорстких посилань.
user3439894

Я спробував це перед читанням вашого коментаря (як зв'язування і копіювання), і він не працював. Я використовую High Sierra, тому це може бути вимкнено у нових версіях, але це не є надійним чи дійсним варіантом. Прийнята відповідь для мене зробила трюк.
rubynorails

@ klanomath хм, здається, ви правильні, що відповідь не була прийнята. Дивно! Я припускаю, що я просто подивився на найвищу відповідь і мій мозок просто подумав, що це було прийнято з якоїсь причини. Це метод, який я використовую для досягнення цієї мети. Але так, вимагаючи перезавантаження і відключення користувача SIP від ​​відновлення або одного користувача було б важко продати на цьому. Лол. Також, не могли б Ви пояснити у відповіді, чому потрібно відключити SIP? Я думав, що це тільки захищені файли в / System. Очевидно я міг бути неправильний хоч. Зазвичай я відключаю SIP з різних причин.
rubynorails

1
@rubynorails Список захищених SIP елементів багато довше (напр cat /System/Library/Sandbox/rootless.conf ). У High Sierra навіть деякі дискові блоки здаються захищеними (наприклад, block0 = MBR / pMBR). ls -lO /usr/bin/ | grep restricted.
klanomath
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.