通过 bash 脚本连接到不可见的 SMB 服务器

通过 bash 脚本连接到不可见的 SMB 服务器

我想要运行如下的 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

相关内容