Je sais que je peux utiliser la commande finger pour afficher tous les utilisateurs actuels connectés au système. Cependant, comment puis-je répertorier les utilisateurs qui sont actuellement connectés au système plus d'une fois?
3 Réponses :
Utilisez la commande w
et analysez sa sortie
Essayer
last | cut -d ' ' -f1 | sort | uniq -c | grep -Ev 'reboot|wtmp'
last
<- last recherche en arrière dans le fichier / var / log / wtmp (ou le fichier désigné par l'option -f) et affiche une liste de tous les utilisateurs connectés (et déconnectés) depuis la création de ce fichier.
cut -d ' ' -f1
<- nom d'utilisateur de coupe
sort
- Trier les données
uniq -c
<- Récupère le nombre d'utilisateurs
grep -Ev
'reboot | wtmp' <- supprime les enregistrements non requis
Un script bash brut:
#!/bin/bash arr=($(users)) tmp=${arr[0]} cnt=1 for ((i = 1; i < ${#arr[@]}; ++i)); do if [ "$tmp" == "${arr[$i]}" ]; then cnt=$((cnt+1)) else if [ "$cnt" -gt "1" ]; then echo "${arr[$i]} is logged in more than once." fi tmp=${arr[$i]} cnt=1 fi done if [ "$cnt" -gt "1" ]; then echo "${arr[$i]} is logged in more than once." fi
Boucle sur un tableau créé à partir de la sortie de la commande users
.
Vérifiez si tmp
est égal à l'élément suivant:
si oui: écho,
else: changez tmp
en élément suivant
REMARQUE:
arr=($(users))
doit être évité en général, mais pour ce problème particulier, cela ne pose pas de problème.
VOIR:
Lecture de la sortie d'une commande dans un tableau dans Bash
StackOverflow est dédié à aider à résoudre les problèmes de code de programmation. Votre Q peut être plus approprié pour les super utilisateurs , mais lisez leur section d'aide concernant les questions sur le sujet. ET s'il vous plaît lire l' aide sur le sujet et l' aide à poser avant de publier plus de questions ici. Bonne chance.