我不确定标题是否正确,如果没有请编辑。
现在我的问题是我有一个用bash编写的自动挂载脚本,它在用户登录时运行并要求用户AD凭据挂载Windows共享。
#!/bin/bash
MOUNTDIR=
DIRNAME=
DOMAIN=
SERVER=
SHARE=
# create mountpoint for mounting
if [ ! -d ${HOME}/${DIRNAME} ]; then
mkdir ${HOME}/${DIRNAME}
fi
## define a function that launched the zenity username dialog
get_username(){
zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Username:"
}
# define a function that launched the zenity password dialog
get_password(){
zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Password:" --hide-text
}
# attempt to get the username and exit if cancel was pressed.
wUsername=$(get_username) || exit
# if the username is empty or matches only whitespace.
while [ "$(expr match "$wUsername" '.')" -lt "1" ]; do
zenity --error --title="Error in username!" --text="Please check your username! Username field can not be empty!" || exit
wUsername=$(get_username) || exit
done
wPassword=$(get_password) || exit
while [ "$(expr match "$wPassword" '.')" -lt "1" ]; do
zenity --error --title="Error in password!" --text="Please check your password! Password field can not be empty!" || exit
wPassword=$(get_password) || exit
done
# mount windows share to mountpoint
sudo mount -t cifs //$SERVER/$SHARE ${HOME}/${DIRNAME} -o username=${wUsername},password=${wPassword},domain=${DOMAIN}
# show if mounting was OK or failed
if [ $? -eq 0 ]; then
zenity --info --title="Mounting public share succeeded!" --text="Location Documents/Shares/public!"
else
zenity --error --title="Mounting public did not succed!" --text="Please contact system administrator!"
fi
现在我一直在寻找一个名为使用Python修改Gnome Keyring 的博客,它非常好地解释了gnome密钥环。但是因为我从未在python中编码并且从未将bthon添加到bash,所以也许这里有人可以告诉我如何将gnome密钥环导入bash以便它保存用户用户名和密码所以一旦重新运行脚本,它就会从gnome密钥环中获取信息。
谢谢。如果您需要更多信息,请发表评论!
答案 0 :(得分:0)
嗯,这个指南有点冗长,而且根据你的需要,浸入Python似乎是不必要的。 gnome-keyring-query(您必须自己编译)将为您提供良好的服务。
用户名可以从命令行选项中提取,也可以保留提示,或者您可以使用$USER
作为默认值。
首先,将密码添加到密钥环:
echo -n "$wPassword" |gnome-keyring-query set WindowsAD
unset wPassword # do not keep this in memory any longer than necessary
gnome-keyring-query在技术上允许您直接输入密码,但它会存储 ENTER 按键的尾随换行符,因此会出错。
阅读:
wUsername="$USER"
wPassword="$(gnome-keyring-query get WindowsAD)"
sudo mount ...
unset wPassword
从安全角度来看,我不太高兴在命令行中看到密码;获得完整流程列表的任何人(例如ps auxww
)都会看到它。但是,我能看到的唯一选择是使用/etc/fstab.d
(使用只有root可以读取的文件,甚至可以在安装后删除它)。这对你来说可能太麻烦了(或者你可能在一个不支持它的系统上)。