Lista de usuários logados (nome, terminal, logintime)

0

Estou tentando imprimir uma lista de usuários que estão atualmente conectados em um terminal. Deve ficar assim:

Eusótenhoissoatéagora:

EstousentindofaltadoTerminaledotempodelogin.Comopossoexibi-los?Istoéoqueeutenhoatéagora:

#!/bin/bashNOWDATE=$(date+"%Y-%m-%d")
NOWTIME=$(date +"%T")
USERS=$(who | cut -d " " -f1)
TERMINAL=0
LOGIN=0

for u in $USERS
do
    echo "$NOWDATE""_""$NOWTIME User: " $u
done
    
por user143230 15.11.2015 / 12:31

2 respostas

1

Analisar a saída de w é provavelmente uma abordagem melhor do que who . Aqui estão alguns dados representativos, que mostram o tempo de login:

$ who
tom      pts/1        2015-11-15 06:39 (michener:S.0)
$ w
 06:40:10 up  1:04,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
tom      pts/1    michener:S.0     06:39    2.00s  0.03s  0.00s w

Eles estão mais disponíveis do que finger . Como este é um exercício em sala de aula, a análise dos dados é deixada em OP. Como uma dica, o awk pode fazer mais do que imprimir seus campos em uma linha:

  • Normalmente, uma pessoa poderia manipular a saída de w tendo no script awk uma seção BEGIN (para definir um número de linha ou estado).
  • Em seguida, uma ação padrão para cada linha (apenas chaves sem padrão) aumentaria o número da linha.
  • Usando o número de linha, manipule a primeira linha especialmente (ignore-a neste caso: OP pode precisar do número de usuários para um cabeçalho de relatório, mas isso não é usado no exemplo do OP), e pule a linha com USER .
  • Depois disso, cada linha pode ser impressa conforme as necessidades do OP. awk será encerrado quando não houver mais dados; não é necessário saber o número de usuários para fazer isso.

Se for solicitado a OP que use who , que tenha opções para listar mais informações, por exemplo,

$ who -l -u
LOGIN    tty5         2015-11-15 05:36              3670 id=5
LOGIN    tty6         2015-11-15 05:36              3671 id=6
LOGIN    tty4         2015-11-15 05:36              3669 id=4
LOGIN    tty3         2015-11-15 05:36              3668 id=3
LOGIN    tty2         2015-11-15 05:36              3667 id=2
LOGIN    tty1         2015-11-15 05:36              3666 id=1
tom      pts/1        2015-11-15 06:39 00:06        5780 (michener:S.0)
tom      pts/2        2015-11-15 06:52   .          6078 (michener:S.1)

novamente, mostrando o nome do terminal e os tempos de login.

    
por 15.11.2015 / 12:42
0

Não há necessidade de script bash. você pode usar o comando finger. Ele fornecerá informações completas sobre todos os usuários de login.

Basta abrir o terminal e digitar o dedo. você vai conseguir o que precisa. Se você quiser saber mais sobre o que o dedo pode fazer leia aqui

    
por 15.11.2015 / 12:38