Saya telah menulis aplikasi Automator dengan skrip shell berikut untuk membuka koneksi FTP di sistem saya:
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'
Ini berfungsi persis seperti yang diharapkan kecuali bahwa perintah sudo memerlukan kata sandi. Ketika perintah yang sama dijalankan di Terminal, itu meminta saya untuk kata sandi tetapi ketika dijalankan sebagai aplikasi Automator, tidak meminta saya untuk input apa pun. Apakah ada cara lain untuk secara sandi meneruskan sandi ke sudo ini dalam skrip Automator? Saya tahu ini bukan praktik yang aman tetapi saya masih ingin melakukannya karena sistem saya cukup aman dan tidak tersentuh oleh orang lain selain saya.
Metode "lakukan skrip shell ... dengan hak administrator" memberikan kesalahan berikut:
sumber
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Lakukan salah satu dari yang berikut dari gambar ini )mengharapkan
Sebagai gantinya, Anda dapat menggunakan alat seperti harapkan untuk skrip interaksi
sudo
.expect
dirancang untuk situasi ini.Skrip shell berikut mungkin cukup untuk dua perintah Anda:
AppleScript dan dengan hak administrator
Pendekatan alternatif adalah dengan menggunakan perintah script shell AppleScript . Perintah ini menawarkan opsi dengan administrator privilege . Catatan Teknis Apple 2065 mencakup skrip shell secara detail.
gema
Pendekatan umum lainnya untuk masalah ini melibatkan penggunaan
echo
untuk meneruskan kata sandisudo
dengan sebuah pipa. Jawaban StackOverflow ini membahas ini dan pendekatan terkait lainnya, Bagaimana cara memberikan kata sandi pada perintah yang meminta untuk di bash?sumber