macOS Sierra: o volume de montagem AppleScript continua solicitando login

12

Para várias versões do OS X que eu usei:

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

Isso funcionou muito bem, uma montagem agradável e silenciosa do compartilhamento de rede, se disponível, é claro.

Agora, instalei recentemente o macOS Sierra (versão beta pública 10.12, build 16A238m) e o script ainda funciona. No entanto, agora, de repente, ele sempre mostra uma caixa de diálogo de login, preenchida previamente com os valores "yourusername" e "yourpassword". O usuário ainda precisará clicar em "Conectar" para montar o compartilhamento.

Alguém sabe se isso é um "bug" na versão beta (eu relatei isso com o aplicativo Feedback da Apple), ou isso é esperado e / ou qual seria a "correção" para isso?

Consulte também: Documentação AppleScript "montar volume"

Hanzaplastique
fonte
3
Isso pode estar relacionado ao fato de a Apple ter bloqueado a /Volumespasta em que o compartilhamento de rede é montado apenas para acesso root, exigindo autorização do usuário para criar o ponto de montagem. Infelizmente, não conheço um trabalho no momento, apesar de brincar com modificadores de sudoers no computador. Eu tenho um Radar Abrir a openradar.appspot.com/radar?id=4948585099558912 wheren a Apple confirmou que está bloqueado.
mattdwen

Respostas:

14

Como a Apple respondeu ao ticket mencionado no link Open Radar de mattdwen acima, a partir do macOS Sierra 10.12,

você não pode mais criar itens em / Volumes, a menos que seja root.

Além disso, meu melhor entendimento do comando de volume de montagem AppleScript é que ele não tem uma maneira de especificar o ponto de montagem e, consequentemente, monta apenas os volumes por /Volumesmeio do mecanismo padrão do Finder. Então, acho que você não pode fazê-lo via AppleScript.

Mas há outro caminho. Você pode realizar a mesma coisa usando o mountcomando de nível inferior :

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

Depois de montar o volume dessa maneira, você deverá ver um ícone de "volume" normal na área de trabalho e o ~/mntdiretório aparecerá como "compartilhamento" quando você navegar no diretório de usuário pelo Finder.

A única coisa que falta nessa abordagem é salvar as credenciais de login no Keychain. Para fazer isso, você precisa fazer um pouco mais de script. Algo assim.

Salve a senha:

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

Recupere a senha e monte o compartilhamento:

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

NOTA: Se você tiver caracteres especiais em sua senha, provavelmente precisará codificá-la por URL, talvez assim:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
mnewt
fonte
Obrigado mnewt e mattdwen! Isso deve ser um bom trabalho! (e possível um melhor do que utilizando AppIeScript)
Hanzaplastique
4
presumivelmente, essa abordagem quebraria qualquer coisa que faça referência a arquivos /Volumes/share?
Jack
Definitivamente quebraria algo assim.
Br.Bill
3

Isso foi corrigido pela Apple no macOS Sierra 10.12.2:

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

Jan Dubois
fonte
Há um erro de digitação no exemplo "desfazer". A maneira correta de "desfazer" seria: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(removida a "gravação" nessa linha).
Hanzaplastique