Extrai o grupo de usuários ao tentar conectar usando o ssh

1

Eu extraí o nome de usuário para realizar um teste:   w | grep ^usera | wc -l

que mostrará 1 se o usera tiver uma sessão aberta, mas agora eu preciso de mais casos de uso genéricos para extrair o grupo de usuários.

Exemplo: Extraia o grupo de usuários, se group=admin e wc -l , quantos usuários do grp admin têm uma sessão ativa.

    
por Oussema Benlagha 24.02.2017 / 10:02

1 resposta

1

Você pode obter os grupos aos quais um usuário pertence com id -Gn username .

Para contar o número de administradores:

who | cut -d ' ' -f 1 |
while read user; do
   id -Gn "$user"
done | grep -F -w "admin" | wc -l

Isso usa o comando who para obter uma lista de usuários que efetuaram login, extrai o nome de usuário simples usando cut e faz uma pesquisa de grupo para cada um deles. Então os grupos são grepped para a string admin e o resultado é contado.

Alternativamente, faça isso de trás para ver se um administrador está logado:

who $( awk -F':' '$1 ~ /^admin/ { gsub(",", " ", $4); print $4 }' /etc/group ) | wc -l

O awk dentro da substituição do comando produzirá todos os usuários que pertencem ao grupo admin , e o who verá se eles estão conectados. O número de linhas de saída é então contado. .

    
por 24.02.2017 / 10:24