Conte usuários únicos no arquivo wtmp

0

Eu estou lutando para contar os usuários únicos no arquivo wtmp.

Aqui está o que eu tenho até agora:

uniqueUsers=$(last | uniq -c | wc -l)

echo "There were '$uniqueUsers' unique users logged on"

Qualquer ajuda é muito apreciada!

    
por user200535 16.11.2016 / 00:07

3 respostas

2

O comando last fornece saída com várias colunas; você deve extrair apenas a primeira coluna (usando awk ou cut ) e classificar os dados para que uniq possa fazer seu trabalho. Usar uniq -c e wc -l é redundante (escolha um):

uniqueUsers=$(last |cut -f1 -d ' ' | grep -v -e '^\(\|reboot\|wtmp\)$' |sort -u | wc -l)
    
por 16.11.2016 / 00:13
1

Minha facada, um pouco mais curta (já que eu prefiro o awk over cut):

uniqueUsers=$(last | awk '{ print $1 }' | sort -u | grep -vE 'reboot|wtmp|^$'| wc -l)
    
por 16.11.2016 / 02:11
0

ignore as linhas em branco, wtmp e reinicialize.

last | awk '!a[$1]++&&$1!~/reboot|wtmp|^$/' | wc -l
    
por 16.11.2016 / 02:57

Tags