Как я могу проверить, зарегистрирован ли пользователь с графической сессией И что тот же пользователь выполняет сценарий

У меня есть сценарий удара, который среди прочего использует gsettings команда. Мне кажется, что для этой команды для работы пользователь должен быть зарегистрирован с графической сессией, и очевидно, также должен выполнить сценарий как самостоятельно (т.е. не корень).

Я мог проверить, используют ли они графический терминал путем рассмотрения ТЕРМИНА переменная, но как я могу удостовериться, что палач сценария является тем же пользователем, который зарегистрирован с графической сессией?

1
задан 21 April 2017 в 02:00

1 ответ

  • Для проверки, кто зарегистрирован, можно использовать 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
    
1
ответ дан 7 December 2019 в 15:37

Другие вопросы по тегам:

Похожие вопросы: