我有以下 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
子进程很可能看不到该变量。您可以使用
PASSWD
导出
export
read -s PASSWD
export PASSWD
注意:这使得它可供所有子进程使用。出于您的目的,您需要的只是将变量仅导出到相关的子进程。
sudo PASSWD="$PASSWD" mount -t cifs //server/dir3 /mnt/nas/dir3 -o username=raf
我想要类似的东西,最终编写了一个名为“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