J'ai un script bash qui utilise entre autres la commande gsettings
. Il me semble que pour que cette commande fonctionne, l'utilisateur doit être connecté avec une session graphique et, évidemment, doit également exécuter le script comme lui-même (c'est-à-dire pas root).
Je pourrais vérifier s'ils utilisent un terminal graphique en regardant la variable TERM, mais comment puis-je m'assurer que le bourreau du script est le même utilisateur qui est connecté avec une session graphique?
Pour vérifier qui est connecté , vous pouvez utiliser who
.
Pour vérifier quel utilisateur a exécuté le script :
ps aux | grep $0 | awk '{ print $1 }' | uniq
ps aux
: Répertorie tous les processus en cours d'exécution, y compris l'utilisateur respectif dans la première colonne.
grep $0
: Recherche le script actuel
awk '{ print $1 }'
: Imprime uniquement le contenu de la première colonne
uniq
: supprime les doublons possibles
Pour vérifier si l'utilisateur qui a exécuté le script est le même que l'utilisateur connecté :
LOGED_USER=$(who | awk '{ print $1 }')
EXEC_USER=$(ps aux | grep $0 | awk '{ print $1 }' | uniq)
if [ $LOGED_USER == $EXEC_USER ]; then
echo "Same USER"
else
echo "Different USER"
fi