ส่งรหัสผ่านไปยังแอปพลิเคชัน Automator


9

ฉันได้เขียนแอปพลิเคชัน 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 หรือไม่ ฉันรู้ว่านี่ไม่ใช่วิธีปฏิบัติที่ปลอดภัย แต่ฉันก็ยังต้องการที่จะทำเพราะระบบของฉันมีความปลอดภัยและไม่มีใครแตะต้องโดยคนอื่นนอกจากฉัน

วิธี "ทำเชลล์สคริปต์ ... พร้อมสิทธิ์ผู้ดูแลระบบ" กำลังแสดงข้อผิดพลาดต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


10

AppleScript ควรอนุญาตให้คุณทำสิ่งนี้โดยใช้with administrator privileges:

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

สิ่งนี้ไม่ผ่านรหัสผ่าน แต่จะแจ้งให้มันพร้อมท์ OS X มาตรฐาน:

คุณสามารถใช้สิ่งนี้ในเวิร์กโฟลว์อัตโนมัติของคุณด้วยวิธีใดวิธีหนึ่งจากสองวิธีต่อไปนี้:


1
@Amit osScript ใช้สำหรับทุบตี :) หากคุณต้องการ AppleScript อย่างแท้จริงในการดำเนินการของ AppleScript Automator ให้ลบจาวาสคริปต์ออกดังนี้: 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 คำสั่งเสนอตัวเลือกพร้อมด้วยสิทธิ์ผู้ดูแลระบบ หมายเหตุทางเทคนิคของแอปเปิ้ล2065ครอบคลุมทำเชลล์สคริปต์ในรายละเอียด

เสียงสะท้อน

วิธีการทั่วไปอื่น ๆ ของปัญหานี้เกี่ยวข้องกับการใช้echoการส่งรหัสผ่านไปยังsudoไปป์ คำตอบ StackOverflow นี้กล่าวถึงวิธีนี้และวิธีการอื่น ๆ ที่เกี่ยวข้องวิธีการให้รหัสผ่านกับคำสั่งที่แจ้งให้หนึ่งในทุบตี?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.