我想要运行如下的 bash 脚本:
#!/bin/bash
read -p "username : " user_var
read -sp "password : " pass_var
echo
printf "//abcde.fghi.de/jklmn /media/localfolder cifs domain=domainname username=$user_var , password=$pass_var , iocharset=utf8,sec=ntlm 0 0" >> /etc/fstab
sudo mount -a
//abcde.fghi.de/jklmn和域名当然是不同的。
对于挂载,我收到 fstab 中新行的读取错误,但我不知道原因。
在 GUI 中,它可以与以下配置配合使用: 图形用户界面截图
答案1
它可能会失败,因为您生成的选项字符串printf
包含空格。
无论如何,将变量扩展直接包含在printf
格式字符串中都被认为是不好的做法。相反,使用%s
并将变量作为参数移到外面:
printf '//abcde.fghi.de/jklmn /media/localfolder cifs domain=domainname,username=%s,password=%s,iocharset=utf8,sec=ntlm 0 0\n' "$user_var" "$pass_var"
话虽如此,我真的很质疑像这样动态编辑 /etc/fstab 的想法 - 为什么不简单地mount
使用相关参数来调用?
sudo mount -t cifs -o domain=domainname,username="$user_var",password="$pass_var",iocharset=utf8,sec=ntlm //abcde.fghi.de/jklmn /media/localfolder
答案2
我最近做了一个类似的支架,必须添加一些vers=1.0
内容才能使其工作。
我真的不知道 vers= 参数的作用是什么,但它对我有用,而且已经足够好了!所以这可能是同一个问题?
之后的完整内容cifs
是这样的,以启用正确的用户/组 ID 和读/写访问权限:
username=???,password=???,uid=1000,gid=1000,rw,iocharset=utf8,sec=ntlm,vers=1.0 0 0