Ich entwickle ein automatisiertes Montageskript für Windows-Freigaben. Ich habe das Skript fertiggestellt und es funktioniert einwandfrei, aber es ist möglich, Gnome Keyring zur Bash hinzuzufügen. Sobald der Benutzer sein Passwort schreibt, wird es in Gnome Keyring gespeichert und später von dort übernommen. Außerdem müssen die Kennwörter meiner Windows AD-Benutzer jeden Monat geändert werden. Ist es möglich, das Skript so zu erstellen, dass das Skript nach Ablauf eines Monats erneut nach dem Kennwort fragt?
Beispiel:
Der Benutzer meldet sich bei Ubuntu an und das Mount-Skript beginnt bei der Anmeldung. Der Benutzer schreibt sein Passwort und das Skript sendet es zum Speichern an Gnome Keyring. Wenn er sich das nächste Mal anmeldet, wird das Passwort vom Gnome-Schlüsselring übernommen, aber wenn es beispielsweise der 1. Juni ist, muss der Benutzer das Passwort erneut schreiben.
Code:
#!/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
Antworten:
Nach dieser Antwort können Sie das Geheimwerkzeug verwenden :
quelle
Bei der Suche nach dem gleichen Thema bin ich auf diese Frage gestoßen. Da es keine aktuelle Antwort gab (die einzige Antwort befindet sich in einem Kommentar), ist hier meine:
Überprüfen Sie dies . Es kann leicht für Skripte verwendet werden
und theoretisch sollte mit vielen Schlüsselringdämonen arbeiten.
quelle
PASSWORD=$(zenity --password)
und dannpython -c "import keyring; keyring.set_password('wifi_work_password', 'ipetrov', '$PASSWORD')"
oderPASSWORD=$(python -c "import keyring; print(keyring.get_password('name', 'username'))")
(dies gibt None zurück, wenn kein Passwort gefunden wird, was für Sie möglicherweise schlecht ist, aber für mich ist es in Ordnung).