Я разрабатываю автоматизированный сценарий монтирования для долей Windows. Я закончил сценарий, и он работает просто великолепно, но является этим возможный добавить Брелок для ключей Gnome к удару поэтому, после того как пользователь пишет hes/hers пароль затем, он будет сохранен к Брелоку для ключей Gnome и позже будет взят оттуда. Также мои пользовательские пароли Windows AD должны изменяться каждый месяц, и действительно ли возможно сделать сценарий, поэтому один раз в месяц передал затем сценарий, просит пароль снова?
Пример:
Пользователь входит в систему Ubuntu, и сценарий монтирования запускается при входе в систему. Пользователь пишет hes/hers пароль, и сценарий отправляет его в Брелок для ключей Gnome, который будет сохранен. В следующий раз, когда он войдет в систему затем, пароль будет взят от Брелока для ключей Gnome, но если 1-го июня, например, пользователь должен записать пароль снова.
Код:
#!/bin/bash
MOUNTDIR=Public
DIRNAME=Shares
DOMAIN=AD_Domain
SERVER=server.local.lan
SHARE=shared_folder
# 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
# if the password is empty or matches only whitespace.
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 -c "import keyring; print(keyring.get_password('name', 'username'))"
python -c "import keyring; keyring.set_password('name', 'username', '$PASSWORD')"
, и в теории должен работать со многими демонами брелока для ключей.
Согласно этому ответ можно использовать секретный инструмент :
# store password
secret-tool store --label='MyLabel' server myserver user myuser key password
# retrieve password
secret-tool lookup server myserver user myuser key password