У меня есть сценарий удара, который среди прочего использует gsettings
команда. Мне кажется, что для этой команды для работы пользователь должен быть зарегистрирован с графической сессией, и очевидно, также должен выполнить сценарий как самостоятельно (т.е. не корень).
Я мог проверить, используют ли они графический терминал путем рассмотрения ТЕРМИНА переменная, но как я могу удостовериться, что палач сценария является тем же пользователем, который зарегистрирован с графической сессией?
Для проверки, кто зарегистрирован, можно использовать who
.
Для проверки, какой пользователь запустил скрипт:
ps aux | grep $0 | awk '{ print $1 }' | uniq
ps aux
: Списки все рабочие процессы включая соответствующего пользователя на первом столбце.
grep $0
: Поиски текущего сценария
awk '{ print $1 }'
: Печать только, что находится в первом столбце
uniq
: Удаляет возможные дубликаты
Проверять, совпадает ли пользователь, который запустил скрипт, с пользователем, вошло в систему:
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