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"값으로 미리 채워진 로그인 대화 상자가 항상 표시됩니다. 공유를 마운트하려면 사용자는 여전히 "연결"을 클릭해야합니다.

베타 버전에서 "버그"인지 (Apple의 피드백 앱으로보고 했는가) 아는 사람이 있습니까?

AppleScript 문서 "마운트 볼륨" 도 참조하십시오.


3
Apple이 /Volumes네트워크 공유가 루트 액세스로 마운트 된 폴더를 잠근 사실과 관련이있을 수 있으며 , 마운트 지점을 작성하려면 사용자 권한이 필요합니다. 불행히도 나는 컴퓨터에서 sudoers를 수정하여 놀고 있지만 지금은 해결 방법을 모른다. openradar.appspot.com/radar?id=4948585099558912에 Open Radar가 있는데 Apple에서 잠겨 있는지 확인했습니다.
mattdwen

답변:


14

macOS Sierra 10.12에서 Apple이 위 의 mattdwen의 Open Radar 링크에 언급 된 티켓에 응답했을 때 ,

루트가 아니면 더 이상 / Volumes에 항목을 만들 수 없습니다.

또한, 애플 스크립트의 최선의 이해 마운트 볼륨 명령은 마운트 지점을 지정하는 방법이 결과적으로 그것을하지 않는다는 것입니다 아래 마운트 볼륨 /Volumes파인더의 표준 메커니즘을 통해. 따라서 AppleScript를 통해 할 수 있다고 생각하지 않습니다.

그러나 다른 방법이 있습니다. 하위 수준 mount명령을 사용하여 동일한 작업을 수행 할 수 있습니다 .

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

이 방법으로 볼륨을 마운트하면 데스크탑에 일반 "볼륨"아이콘이 나타나고 ~/mntFinder를 통해 사용자 디렉토리를 탐색 할 때 디렉토리가 "공유"로 나타납니다.

이 접근 방식에서 누락 된 한 가지는 로그인 자격 증명을 키 체인에 저장하는 것입니다. 그렇게하려면 조금 더 스크립팅해야합니다. 이 같은.

비밀번호를 저장하십시오.

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 감사합니다! 이것은 좋은 해결책이어야합니다! (나은 가능한 한 애플 스크립트를 사용하는 것보다)
Hanzaplastique

4
아마도이 방법은 /Volumes/share?
Jack

그것은 분명히 그런 것을 깨뜨릴 것입니다.
Br.Bill

3

이것은 macOS Sierra 10.12.2에서 Apple에 의해 수정되었습니다.

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.