Przekazywanie hasła do aplikacji Automator

9

Napisałem aplikację Automator z następującym skryptem powłoki, aby otworzyć połączenie FTP w moim systemie:

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'

Działa to dokładnie tak, jak oczekiwano, z wyjątkiem tego, że polecenie sudo potrzebuje hasła. Gdy to samo polecenie zostanie uruchomione na Terminalu, monituje mnie o hasło, ale gdy działa jako aplikacja Automatora, nie monituje mnie o żadne dane wejściowe. Czy istnieje możliwość programowego przekazania hasła do tego sudo w skrypcie Automator? Wiem, że nie jest to bezpieczna praktyka, ale nadal chcę to robić, ponieważ mój system jest w miarę bezpieczny i nietknięty przez nikogo poza mną.

Metoda „wykonaj skrypt powłoki ... z uprawnieniami administratora” powoduje następujący błąd:

wprowadź opis zdjęcia tutaj

TheLearner
źródło

Odpowiedzi:

10

AppleScript powinien umożliwiać to za pomocą with administrator privileges:

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

To nie podaje hasła, ale monituje o podanie standardowego monitu OS X:

Możesz użyć tego w przepływie pracy Automatora na jeden z dwóch następujących sposobów:

grg
źródło
1
@Amit osascript jest dla bash :) Jeśli chcesz czystego AppleScript w akcji AppleScript Automator, usuń ten osascript w następujący sposób: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges( Wykonaj jedną z poniższych czynności z tego obrazu )
grg
1
Tak, to działało jak urok! Dzięki za cierpliwość ... głupiutki ja!
TheLearner
2

oczekiwać

Zamiast tego możesz użyć narzędzia takiego jak spodziewaj się, że będziesz pisać scenariusz interakcji sudo. expectjest przeznaczony do tej sytuacji.

expect - zaprogramowany dialog z programami interaktywnymi

Poniższy skrypt powłoki może wystarczyć dla dwóch poleceń:

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

AppleScript i uprawnienia administratora

Alternatywnym podejściem jest użycie polecenia do shell skryptu AppleScript . Polecenie oferuje opcję z uprawnieniami administratora . Uwaga techniczna Apple 2065 obejmuje szczegółowe wykonanie skryptu powłoki.

Echo

Inne typowe podejścia do tego problemu obejmują echoprzekazywanie hasła sudoza pomocą potoku. W tej odpowiedzi StackOverflow omówiono to i inne pokrewne podejścia. Jak podać hasło do polecenia monitującego o podanie jednego z nich w bash?

Graham Miln
źródło