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.