Truyền mật khẩu cho ứng dụng Automator


9

Tôi đã viết một ứng dụng Automator với tập lệnh shell sau để mở kết nối FTP trên hệ thống của mình:

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

Điều này hoạt động chính xác như mong đợi ngoại trừ lệnh sudo cần mật khẩu. Khi cùng một lệnh được chạy trên Terminal, nó sẽ nhắc tôi nhập mật khẩu nhưng khi chạy dưới dạng ứng dụng Automator, sẽ không nhắc tôi về bất kỳ đầu vào nào. Có cách nào để lập trình chuyển mật khẩu cho sudo này trong tập lệnh Automator không? Tôi biết đây không phải là một thực hành an toàn nhưng tôi vẫn muốn thực hiện vì hệ thống của tôi được bảo mật một cách hợp lý và không bị ảnh hưởng bởi bất kỳ ai khác ngoài tôi.

Phương thức "do shell script ... với đặc quyền của quản trị viên" đang đưa ra lỗi sau:

nhập mô tả hình ảnh ở đây

Câu trả lời:


10

AppleScript sẽ cho phép bạn làm điều này bằng cách sử dụng with administrator privileges:

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

Điều này không vượt qua mật khẩu, nhưng nhắc nhở với mật khẩu OS X tiêu chuẩn:

Bạn có thể sử dụng điều này trong quy trình Công cụ tự động của mình theo một trong hai cách sau:


1
@Amit osascript là dành cho bash :) Nếu bạn muốn AppleScript thuần túy trong hành động AppleScript Automator, hãy xóa osascript như thế này: do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges( Thực hiện một trong những điều sau từ hình ảnh này )
grg

1
Vâng, điều này làm việc như quyến rũ! Cảm ơn sự kiên nhẫn của bạn ... tôi thật ngốc!
TheLearner

2

chờ đợi

Thay vào đó, bạn có thể sử dụng một công cụ như mong đợi để kịch bản tương tác với sudo. expectđược thiết kế cho tình huống này.

mong đợi - đối thoại được lập trình với các chương trình tương tác

Kịch bản shell sau đây có thể đủ cho hai lệnh của bạn:

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

AppleScript và với đặc quyền của quản trị viên

Một cách tiếp cận khác là sử dụng lệnh script shell của AppleScript . Lệnh cung cấp một tùy chọn với quyền quản trị viên . Bao gồm Note kỹ thuật 2065 của Apple làm kịch bản shell một cách chi tiết.

tiếng vang

Các cách tiếp cận phổ biến khác cho vấn đề này liên quan đến việc sử dụng echođể chuyển mật khẩu đến sudovới một đường ống. Câu trả lời StackOverflow này thảo luận về điều này và các phương pháp liên quan khác, Làm thế nào để cung cấp mật khẩu cho một lệnh nhắc nhở một trong bash?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.