Я написал приложение Automator со следующим сценарием оболочки, чтобы открыть FTP-соединение в моей системе:
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'
Это работает точно так, как ожидается, за исключением того, что для команды sudo требуется пароль. Когда та же команда запускается в терминале, он запрашивает у меня пароль, но при запуске в качестве приложения Automator не запрашивает ввода данных. Есть ли способ программно передать пароль этому sudo в скрипте Automator? Я знаю, что это небезопасная практика, но я все еще хочу сделать это, поскольку моя система достаточно безопасна и не затронута кем-либо, кроме меня.
Метод "do shell script ... с правами администратора" выдает следующую ошибку:
источник
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Выполните одно из следующих действий на этом рисунке )ожидать
Вместо этого вы можете использовать инструмент, подобный ожидаемому, для сценария взаимодействия с
sudo
.expect
предназначен для этой ситуации.Следующего сценария оболочки может быть достаточно для ваших двух команд:
AppleScript и с правами администратора
Альтернативный подход - использовать команду сценария do shell от AppleScript . Команда предлагает опцию с правами администратора . В технических заметках Apple 2065 подробно описан сценарий оболочки.
эхо
Другие распространенные подходы к этой проблеме включают использование
echo
для передачи пароляsudo
с помощью канала. В этом ответе StackOverflow обсуждаются этот и другие связанные подходы. Как предоставить пароль для команды, запрашивающей пароль в bash?источник