如何通过安装 cifs 共享的脚本设置密码变量

问题描述 投票:0回答:2

我有以下 bash 脚本来在 NAS 驱动器中挂载几个共享目录:

sudo mount -t cifs //server/dir1 /mnt/nas/dir1 -o username=raf
sudo mount -t cifs //server/dir2 /mnt/nas/dir2 -o username=raf
sudo mount -t cifs //server/dir3 /mnt/nas/dir3 -o username=raf

每个挂载命令都会要求输入密码。我想避免多次输入相同的密码。

mount.cifs
手册中,它说可以使用变量
PASSWD
作为密码。

这就是我的 bash 技能让我失败的地方:如何更新脚本来询问并设置

PASSWD
变量,调用
mount
命令,最后取消设置
PASSWD
变量?

到目前为止,我可以在不使用回显屏幕的情况下阅读某些内容

read -s PASSWD

但我不确定如何将其合并到脚本中。

注1:

mount
论点
-o password=password
对我来说是行不通的。我不想在文本文件中使用硬编码密码。

注 2:同样,我也不想采用

mount
论点
credentials=filename

bash nas cifs
2个回答
3
投票

子进程很可能看不到该变量。您可以使用

PASSWD
 导出 
export

read -s PASSWD
export PASSWD

注意:这使得它可供所有子进程使用。出于您的目的,您需要的只是将变量仅导出到相关的子进程。

sudo PASSWD="$PASSWD" mount -t cifs //server/dir3 /mnt/nas/dir3 -o username=raf

0
投票

我想要类似的东西,最终编写了一个名为“cifscloak”的 python 实用程序

使用 cifscloak,密码会加密存储在 sqlite 数据库中。

使用非常简单:

sudo cifsfs addmount -n 电影 -s myfilms -m /mnt/films -i myfileserver -o "ro" -u cifsuser

sudo cifsfs addmount -n games -s mygames -m /mnt/games -i myfileserver -u cifsuser

sudo cifsfs挂载-a

要在启动时挂载文件系统,可以使用 cifscloak 创建 systemd 文件:

cifscloak systemdfile -a

看一下,看看它是否适合您:

https://github.com/sudoofus/cifscloak pip 安装 cifscloak

© www.soinside.com 2019 - 2024. All rights reserved.