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
Есть проблема на 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?
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
Tags command-line