Передача пароля до програми Automator


8

Я написав програму 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? Я знаю, що це не безпечна практика, але я все ще хочу це зробити, оскільки моя система є достатньо безпечною і недоторканою ніким, крім мене.

Метод "зробити скрипт оболонки ... з правами адміністратора" дає таку помилку:

enter image description here

Відповіді:


7

AppleScript повинен дозволити вам зробити це за допомогою with administrator privileges:

osascript -e 'do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges'

Це не передає пароль, але запитує його за допомогою стандартної підказки OS X:

Ви можете використовувати це в робочому процесі Automator одним із двох способів:


Тут виникає синтаксична помилка: "Невідомий маркер не може піти після цього ідентифікатора".
TheLearner

Це все ще дає таку ж помилку :(
TheLearner

Так, це єдиний рядок ... див. Скріншот у оновленому питанні.
TheLearner

1
@Amit osascript для bash :) Якщо ви хочете чистий AppleScript в дії AppleScript Automator, видаліть osascript так: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges ( Зробіть одне з наступного з цієї картини )
grg

1
Так, це спрацювало як чарівність! Дякуємо за ваше терпіння ... дурне!
TheLearner

2

очікувати

Замість цього можна скористатися подібним інструментом очікувати сценарію взаємодії з sudo. expect призначений для цієї ситуації.

очікувати - запрограмований діалог з інтерактивними програмами

Наступного скрипта оболонки може бути достатньо для двох ваших команд:

#!/usr/bin/expect -f
spawn sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
send "my-secret-password\n"

AppleScript та права адміністратора

Альтернативним підходом є використання AppleScript зробити скрипт оболонки команду. Команда пропонує a з правами адміністратора опції. Apple Технічна примітка 2065 обкладинки до скрипта оболонки докладно.

луна

Інші поширені підходи до цієї проблеми включають використання echo , щоб передати пароль sudo з трубою. У цьому відповіді StackOverflow обговорюється цей та інші відповідні підходи, Як надати пароль команді, яка підказує для одного в bash?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.