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çãoBEGIN
(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.