J'ai imaginé cette fonction pour déconnecter les utilisateurs (voir en bas de page)
Il suppose
- vous avez les permissions sudo
- vous avez bash
- les utilisateurs ont une session X en cours (bien que vous deviez être en mesure de lancer plusieurs fois la même commande de déconnexion pour vous débarrasser des sessions restantes).
Vous pouvez lui donner plusieurs noms d'utilisateur :
logout john jane mike elisa
Et vous pouvez lui donner des options supplémentaires :
logout john --force
J'ai donc la fonction d'aide suivante :
function forcelogout() {
logout "$@" --no-prompt --force
}
Notes :
- Il s'agit d'un instrument brutal qui fonctionne en copiant simplement l'ensemble de l'environnement de la session. Il pourrait être plus sélectif.
- La déconnexion semble parfois prendre un certain temps
- Dans de rares cas, la session continue d'être signalée jusqu'à ce que quelqu'un visite le vt où la session s'est déroulée, mais il n'y a plus rien).
CODE
function logout() {
local USERNAME
export USERNAMES=( )
while [ -n "$1" ]; do case "$1" in
-* ) break ;;
*) USERNAMES+=( "$1" ); shift ;;
esac; done
for USERNAME in "${USERNAMES[@]}"; do
local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
if [ -n "$SESSION_PID" ]; then
(
sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
echo "gnome-session-quit --logout $@"
) | sudo -u "$USERNAME" sh -;
fi
done
}