Problema ao tentar executar o script

2

Есть проблема на Ubuntu 11.10, при запуске sh скриптов, без активной консоли, команда que не отображает активных пользователей, а в скрипте необходимо знать, какой пользователь активен сейчас. Кто нибудь сталкивался?

( cortesia do Google Tradutor )

Há um problema no Ubuntu 11.10, quando você executa o script sh, sem o console ativo, a equipe que não mostra usuários ativos, mas o script precisa saber qual usuário está ativo no momento. Quem já encontrou?

A propósito, o pacote acpi tem um bug relacionado ao meu problema, seu script também é usado pelo comando who .

$ dpkg -l | grep acpi | awk '{print $2 "_" $3}'
acpi_1.5-3ubuntu1
acpi-support_0.138
acpid_1:2.0.10-1ubuntu2.3

$ grep who /usr/share/acpi-support/*
/usr/share/acpi-support/power-funcs: user=$(who | awk "/:$displaynum)/ { print \; exit }")
/usr/share/acpi-support/power-funcs: user=$(who | awk "/:$displaynum/ { print \; exit }")

Acho que isso pode ser corrigido:

user=$(users | sed 's | |\n|g' | uniq)



_ __ _ Atualizado em 12.01.2012
O problema não está resolvido!
Pequena experiência divertida: para o teste com os comandos who e user , eu corro o terminal e adiciono as seguintes linhas ao / etc / crontab:

* * * * *   root    echo 'who: ''who' >> /123
* * * * *   root    echo 'users: ''users' >> /123
* * * * *   root    echo 'users /var/run/utmp: ''users /var/run/utmp' >> /123
* * * * *   root    echo 'users /var/log/wtmp: ''users /var/log/wtmp' >> /123

E verifique o arquivo / 123 quando o terminal está em execução:

users /var/log/wtmp: administrator administrator...
who: administrator pts/3 2012-01-12 14:59 (:0.0)
users: administrator
users /var/run/utmp: administrator

quando o terminal está fechado:

who: 
users: 
users /var/run/utmp: 
users /var/log/wtmp: administrator administrator ...

Novamente, a questão de como obter uma lista de usuários logados no sistema (sessão X), a partir do console como root.

Até eu ver apenas uma solução:

user=$(users /var/log/wtmp | sed 's| |\n|g' | uniq)'

Quem sabe uma solução mais elegante? Ou isso é apenas uma opção?
Ou talvez ainda seja um bug?

    
por METAJIJI 07.01.2012 / 06:37

1 resposta

3

O usuário atualmente conectado é definido na variável de ambiente $ USER

echo $USER

Isso deve dar tudo de que você precisa. Para obter uma lista de todos os usuários que efetuaram login,

users
    
por Takkat 07.01.2012 / 10:20