我正在尝试在Mac OSX Mavericks上安装Windows共享文件夹。简单的用户名和密码工作正常
mount -t smbfs //user2:password2@server1.mydomain.com/myproject ~/localmap
在尝试更有效的用户名和密码时,我收到解析URL失败的错误。 细节是 用户名:mydomain \ user1 密码:A%b $ c @ d!e#f
尝试的命令是
mount -t smbfs //mydomain\user1:A%b\$c\@d\!e#f@server1.mydomain.com/myproject ~/localmap
根据我的发现,$和!需要逃脱。需要有关如何逃避特殊字符的帮助。顺便说一句,仅使用没有域的用户名似乎适用于第一种情况
答案 0 :(得分:4)
单引号转义shell元字符a semi-colon should separate the domain controller from the credentials,并且可以使用%40
代表密码中的@
:
mount -t smbfs '//mydomain;user1:A%b$c%40d!e#f@server1.mydomain.com/myproject' ~/localmap
答案 1 :(得分:3)
只需对特殊字符进行编码即可。
@ -> %40
$ -> %24
! -> %21
其他人物可以在这里找到: http://www.degraeve.com/reference/urlencoding.php
e.g。
username="someone", password="passw@rd"
然后这应该适合你:
mount -t smbfs //someone:passw%40rd@server/path /Volumes/path
答案 2 :(得分:2)
使用\
转义特殊符号
如果你想转换一些特殊的符号你可以写额外的字符串,其中$ 1 - 是你提供转换的参数
user1=$(sed -e "s/+/%2B/g;s/@/%40/g;s/_/%5F/g" <<< "$1")
然后您可以使用" "
并调用转换后的变量$user1
答案 3 :(得分:1)
使用nodejs编码url的东西可能很方便:
$ node -e 'console.log(encodeURIComponent("A%b$c@d!e#f"))'
A%25b%24c%40d!e%23f
以另一种方式解码:
$ node -e 'console.log(decodeURIComponent("A%25b%24c%40d!e%23f"))'
A%b$c@d!e#f
答案 4 :(得分:0)
请参阅https://serverfault.com/questions/309429/mount-cifs-credentials-file-has-special-character,这是我的第一个答案。基本上,您使用凭据创建文件,然后指定该文件而不是您的用户名和密码。