Scripting: Contando usuários logados no sistema

2

Eu tenho o seguinte script.

#!/bin/bash
#Solution script1

who
date +"Today %d %B, there are $# users logged in onto the system"

No plano de fundo user1 efetuou login em tty2 e tty3 e root efetuou login em pts/0 e tty1 . A resposta então deveria ser

Today 22 Oktober, there are 2 users logged in onto the system.

    
por Sander Van der Borght 22.11.2014 / 14:30

1 resposta

1

Apenas analise a saída de who :

#!/usr/bin/env bash

num=$(who | sort -uk1,1 | wc -l)
date +"Today %d %B, there are $num users logged in onto the system"

Explicação

sort -uk1,1 : o -k1,1 significa "classificar no 1º campo e somente no primeiro campo". O -u significa "imprimir apenas os campos de classificação exclusivos". Juntos, eles imprimirão uma linha para cada usuário encontrado.

O piping acima para wc -l imprimirá o número de linhas, que é o número de usuários únicos. Note que -u é uma extensão GNU, mas como você está usando date -d , que também é GNU, presumo que você esteja usando as versões GNU das ferramentas.

    
por 22.11.2014 / 14:41

Tags