• Вот сценарий, который будет выполняться через AppleScript:
bash-3.2$ cd /Users/jack/Desktop/
bash-3.2$ ls -l | grep static
-rwxrwxrwx 1 jack admin 65 5 May 08:10 static-routes.sh
bash-3.2$ cat static-routes.sh
#!/bin/bash
sudo route -n add -net 192.168.3.0/24 172.16.254.134
~
• AppleScript содержит следующее:
do shell script "~/Desktop/static-routes.sh"
• При выполнении сценария из AppleScript, щелкнув на кнопке «Выполнить» появляется всплывающее окно с сообщением:
Ошибка сценария sudo: для чтения пароля требуется терминал; Либо используйте параметр -S для чтения из стандартного ввода, либо настройте помощник askpass ![enter image description here](https://i.stack.imgur.com/w01V5.png)
• При выполнении сценария с консоли без sudo
дополнительные запросы не появляются. :
bash-3.2$: Desktop jack$ ./static-routes.sh
add net 192.168.3.0: gateway 172.16.254.134
• Вот фрагмент из /etc/sudoers
:
bash-3.2$ sudo visudo
# root and users in group wheel can run anything on any machine as any user
root ALL = (ALL) ALL
%admin ALL = (ALL) ALL
jack ALL = (ALL) NOPASSWD: /Users/jack/Desktop/static-routes.sh
## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d
Defaults timestamp_timeout=60
Вопросы:
• Почему появляется эта ошибка, поскольку, я явно добавлен сценарий в файл sudoers, который будет выполняться без запроса пароля через sudo?
• Какого пользователя AppleScript использует для выполнения сценариев? Можно ли его изменить?