Obtenha o valor DISPLAY por nome de usuário

4

Eu corro os seguintes comandos para obter o valor DISPLAY para um usuário logado.

$ loginctl list-sessions
   SESSION        UID USER             SEAT            
        c2       1000 asif             seat0               
        c3       1001 john             seat1

Em seguida, use um dos valores de SESSION no seguinte comando

$ loginctl show-session -p Display -p Active c3
Display=:20
Active=yes

Aqui eu recebo Display=:20 . Não há qualquer maneira de obter esse valor para qualquer usuário logado pelo nome de usuário ou uid?

Eu fiz o seguinte shell script para fazer o trabalho, mas está ficando muito demorado.

#!/bin/bash
clear
BASEDIR=$(dirname $0)
CUID='id -u' 
SESSIONS='loginctl list-sessions'
readarray -t SESSIONS <<< "$SESSIONS"
for LN in "${SESSIONS[@]}"
do
    W=($LN)
    SID="${W[0]}"
    USD="${W[1]}"
    USR="${W[2]}"
    SET="${W[3]}"
    if [ $CUID == $USD ]; then
        SINFO=('loginctl show-session -p Display -p Active $SID')
        DISPL="${SINFO[0]}" 
        DISP=( 'echo $DISPL | cut -f2 -d=' )
        export DISPLAY=$DISP && /usr/bin/python $BASEDIR/run.pyw
    fi
done

Estou usando o Linux Mint XFCE.

    
por 8thperson 28.05.2016 / 06:25

1 resposta

1

Aqui está um script que mostrará a exibição do usuário especificado.

Vamos nomear este script showuser :

#!/bin/bash
loginctl show-session $(sudo loginctl -a show-user $1 | grep Display | sed 's/Display.//g') | grep Display

Agora, você pode executar o script seguido por um nome de usuário e ele retornará a exibição.

Exemplo:

~$ ./showuser john
Display=:20
    
por 28.05.2016 / 10:34

Tags