Скрипт Python не работает при запуске через osascript
Итак, когда я запускаю эту команду:
sudo python3.5 /path/to/my/script.py
Он выполняется нормально и возвращает:
выберите пользователя:
- гость
Мое имя пользователя
Выберите аккаунт, который необходимо очистить (введите соответствующий номер):
После чего я ввожу "2", нажимаю ввод и скрипт работает отлично.
Тем не менее, когда я бегу:
osascript -e 'do shell script "python3.5 /Path/to/my/script.py" with administrator privileges'
Я получаю ожидаемое всплывающее окно для ввода моего sudo-пароля, но после этого он выдает ошибку:
OSError: [Errno 9] Плохой дескриптор файла (1) нуждается в очистке (введите соответствующий номер):")
У кого-нибудь есть идеи по этому поводу? Любая помощь будет принята с благодарностью!
PS; некоторые сведения о том, почему мне нужен этот метод -> я использую предварительный сценарий (также написанный на python), из которого необходимо выполнить myscript.py. Мой prescript.py не нуждается в правах администратора. Иногда, однако, потребуется вызвать myscript.py, который требует административных привилегий. Поскольку я не хочу жестко кодировать свой sudo-пароль в любом из моих сценариев, я хочу получить всплывающее окно с просьбой об этом. Я решил, что мой pre-script.py скажет запустить subprocess.Popen([]) по команде osascript, которую я упомянул выше, и сделает свое дело. Однако для этого мне сначала нужно заставить команду osascript работать правильно.
1 ответ
Ах, так что я понял это сам. Как и следовало ожидать, это было связано с привилегиями. как-то "do shell script"
запускается через другие привилегии, а затем просто вводит команду в терминале. А также "sudo command"
в терминале не равно (полностью) "do shell script [script] with administrator privileges"
,
Для меня то, что исправило это, было навигация к:
Системные настройки -> Безопасность и конфиденциальность -> вкладка Конфиденциальность -> Специальные возможности
А затем перетащите Python.app и Terminal.app в это окно (вам может понадобиться сначала разблокировать его, нажав на небольшой замок в левом нижнем углу этого окна).