macOS Sierra: ปริมาณการติดตั้ง AppleScript จะขอการเข้าสู่ระบบ


12

สำหรับ OS X หลายรุ่นที่ฉันใช้:

/usr/bin/osascript -e mount volume "smb://yourserver" as user name  "yourusername" with password yourpassword

สิ่งนี้ใช้งานได้ดียอดเยี่ยมและเงียบสงบของเครือข่ายที่ใช้ร่วมกันหากมีแน่นอน

ตอนนี้เมื่อเร็ว ๆ นี้ฉันได้ติดตั้ง macOS Sierra (เบต้าสาธารณะ 10.12 สร้าง 16A238m) และสคริปต์ยังคงใช้งานได้ แต่ตอนนี้มันจะแสดงกล่องโต้ตอบเข้าสู่ระบบเสมอซึ่งจะเติมค่า "yourusername" และ "yourpassword" ไว้ล่วงหน้า ผู้ใช้จะต้องคลิก "เชื่อมต่อ" เพื่อติดตั้งการแชร์

ไม่มีใครรู้ว่านี่เป็น "ข้อผิดพลาด" ในรุ่นเบต้า (ฉันรายงานสิ่งนี้ด้วยแอพ Feedback Feedback ของ Apple) หรือเป็นสิ่งที่คาดหวังและ / หรือสิ่งที่ "แก้ไข" สำหรับสิ่งนั้น

ดูเพิ่มเติมที่: เอกสารประกอบของ AppleScript "ปริมาณการเชื่อมต่อ"


3
อาจเกี่ยวข้องกับข้อเท็จจริงที่ว่า Apple ได้ล็อค/Volumesโฟลเดอร์ไว้ที่เครือข่ายใช้ร่วมกันเพื่อเข้าถึงรากเท่านั้นต้องได้รับอนุญาตจากผู้ใช้เพื่อสร้างจุดเชื่อมต่อ น่าเสียดายที่ฉันไม่รู้จักการทำงานในขณะนี้แม้ว่าฉันจะเล่นกับการดัดแปลง sudoers บนคอมพิวเตอร์ ฉันมี Open Radar ที่openradar.appspot.com/radar?id=4948585099558912เมื่อ Apple ยืนยันว่าถูกล็อคไว้
mattdwen

คำตอบ:


14

ดังที่ Apple ตอบตั๋วที่อ้างอิงในลิงก์Open Radarของ mattdwen ด้านบนในฐานะของ macOS Sierra 10.12

คุณไม่สามารถสร้างไอเท็มใน / เล่มได้อีกเว้นแต่ว่ารูท

นอกจากนี้ความเข้าใจที่ดีที่สุดของฉันเกี่ยวกับคำสั่งการปรับระดับเสียงของ AppleScript ก็คือมันไม่มีวิธีระบุจุดเมานท์และดังนั้นจึงจะเมานปริมาณเท่านั้นภายใต้/Volumesกลไกมาตรฐานของ Finder's ดังนั้นฉันไม่คิดว่าคุณสามารถทำได้ผ่าน AppleScript

แต่มีวิธีอื่น คุณสามารถทำสิ่งเดียวกันโดยใช้mountคำสั่งระดับล่าง:

mkdir -p ~/mnt
mount_smbfs "//my_username:my_password@my_hostname/share" ~/mnt

หลังจากติดตั้งระดับเสียงด้วยวิธีนี้คุณจะเห็นไอคอน "ระดับเสียง" ปกติปรากฏขึ้นบนเดสก์ท็อปของคุณและ~/mntไดเรกทอรีจะปรากฏเป็น "แชร์" เมื่อคุณเรียกดูไดเรกทอรีผู้ใช้ของคุณผ่าน Finder

สิ่งหนึ่งที่ขาดหายไปจากวิธีนี้คือการบันทึกข้อมูลการเข้าสู่ระบบใน Keychain ในการทำเช่นนั้นคุณต้องทำสคริปต์เพิ่มขึ้นอีกเล็กน้อย บางสิ่งเช่นนี้

บันทึกรหัสผ่าน:

security add-generic-password -a my_username -s my_hostname -w my_password

ดึงรหัสผ่านและติดตั้งการแชร์:

pass=$(security find-generic-password -a my_username -s my_hostname -w)
mount_smbfs "//my_username:${pass}@my_hostname/share" ~/mnt

หมายเหตุ: หากคุณมีอักขระพิเศษในรหัสผ่านของคุณคุณอาจต้องเข้ารหัส URL ซึ่งอาจเป็นดังนี้:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password

ขอบคุณ mnewt และ mattdwen! นี่ควรจะเป็นงานที่ดี! (และเป็นไปได้ที่ดีกว่าการใช้ AppleScript)
Hanzaplastique

4
น่าจะเป็นวิธีการนี้จะทำลายสิ่งที่อ้างอิงไฟล์ภายใต้/Volumes/share?
แจ็ค

แน่นอนว่ามันจะทำลายทุกอย่างเช่นนั้น
Br.Bill

3

สิ่งนี้ได้รับการแก้ไขโดย Apple ใน macOS Sierra 10.12.2:

https://support.apple.com/en-us/HT207112


มีการพิมพ์ผิดในตัวอย่าง "เลิกทำ" ของพวกเขา วิธี "เลิกทำ" ที่ถูกต้องจะเป็น: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(ลบ "เขียน" ในบรรทัดนั้นออก)
Hanzaplastique
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.