我正在开发一款需要自动挂载 smb/cifs 共享的软件。
问题是必须使用用户的登录名和密码来挂载共享,而且据我所知,出于我完全不知道的原因,gio 似乎没有在命令行中指定密码的选项,只有用户才可以。如果用户需要密码,它会以交互方式询问。虽然这对从终端调用 gio 的人来说是可行的,但对于开发人员来说……这很麻烦。
我已经尝试拨打
gio mount smb://<user>:<password>@<server>/<share>/
但它只是忽略密码并在终端中要求输入密码。(糟糕的)文档没有显示任何指定密码的方法。等待密码提示并“模拟”输入是设置密码的唯一方法吗?
使用 mount -t cifs 不是一个选项,因为它需要 root/sudo,而我正在使用的软件不应该需要提升的权限。
答案1
在你的主目录中创建一个文件。例如/home/morbius/.servercreds
在该文件中输入您的凭据。您必须指定用户名、工作组和密码 - 每行一个
<username>
<workgroup>
<password>
那么你的 gio 命令将如下所示:
gio mount smb://<server>/<share> < /home/morbius/.servercreds
答案2
为了避免创建新文件,您可以通过管道将输入导入gio
。
echo -e "USERNAME\nWORKGROUP\nPASSWORD\n" | gio mount smb://<server>/<share>
echo -e
告诉echo
允许特殊字符,并且\n
每个字段之后就像按下回车键一样。