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:
źródło
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 )oczekiwać
Zamiast tego możesz użyć narzędzia takiego jak spodziewaj się, że będziesz pisać scenariusz interakcji
sudo
.expect
jest przeznaczony do tej sytuacji.Poniższy skrypt powłoki może wystarczyć dla dwóch poleceń:
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ą
echo
przekazywanie hasłasudo
za 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?źródło