#26 Le 04/08/2018, à 10:10
- MicP
Re : Bash – affiche la liste de tous les utilisateurs et le groupe
Bonjour
#!/bin/bash -i
# l'option "interactive" de bash permet d'utiliser la variable COLUMNS dans un script
printf '\x2d%.s' $(seq $COLUMNS)
Dernière modification par MicP (Le 04/08/2018, à 10:46)
Hors ligne
#27 Le 04/08/2018, à 10:38
- bruno
Re : Bash – affiche la liste de tous les utilisateurs et le groupe
Oui encore mieux. J'aurais du penser à utiliser $COLUMNS
#28 Le 04/08/2018, à 12:45
- linuxm@c
Re : Bash – affiche la liste de tous les utilisateurs et le groupe
Script(01) = une légère modification
#!/bin/bash
# bruno
term_cols=$(tput cols)
format='| %-15s| %-15s| %-6s|%s\n'
printf %"$term_cols"s |tr " " "="
printf "$format" "User(id)" "Group(id)" "Status" " Groupes secondaires";
printf %"$term_cols"s |tr " " "="
while IFS=':' read -r user pass uid gid other_details;
do
if [ $uid -eq 0 ] || [ $uid -ge 500 ] && [ $uid -le 60000 ]
then
status="$(sudo passwd -S "$user"| cut -d " " -f 2)"
primary_group="$(getent group "$gid" | cut -d ":" -f 1)"
all_groups="$(groups "$user" | cut -d ":" -f 2 | cut -d " " -f3-)"
printf "$format" "$user""(""$uid"")" "$primary_group""(""$gid"")" " $status" " $all_groups";
printf %"$term_cols"s |tr " " "-"
fi
done < /etc/passwd
Affichage
==========================================================================================================
| User(id) | Group(id) | Status| Groupes secondaires
==========================================================================================================
| root(0) | root(0) | L |
----------------------------------------------------------------------------------------------------------
| user01(1001) | user01(1001) | P | fax scanner
----------------------------------------------------------------------------------------------------------
| user02(1002) | user02(1002) | L | adm fax sudo audio video lpadmin scanner
----------------------------------------------------------------------------------------------------------
| user03(1003) | user03(1003) | L | dialout audio video netdev scanner
----------------------------------------------------------------------------------------------------------
Script(02)
# !/bin/bash
echo "┌───┬──────────────────────┬───────────────────────────────────────────────────────────────────────────────────────┐"
echo "│ x │ Users ID │ Groups IDs , (Primary & Secondarys ) │"
echo "├───┼──────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤"
for i in $(getent passwd | grep -wFf /etc/shells | cut -d ":" -f 1) ; do
sudo passwd -S $i | awk '{print "│ " $2}' >> tmp
id $i | awk '{printf ("│ %-20s│ %-85s│\n", $1=substr($1,5,20),$3=substr($3,9,85))}' >> tmp ; done
cat tmp | sed "N;s/\n/ /"; rm tmp
echo "└───┴──────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘"
exit 0
Affichage
┌───┬──────────────────────┬───────────────────────────────────────────────────────────────────────────────────────┐
│ x │ Users ID │ Groups IDs , (Primary & Secondarys ) │
├───┼──────────────────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│ L │ 0(root) │ 0(root) │
│ P │ 1001(user01) │ 1001(user01),21(fax),118(scanner) │
│ L │ 1002(user02) │ 1002(user02),4(adm),21(fax),27(sudo),29(audio),44(video),116(lpadmin),118(scanner) │
│ L │ 1003(user03) │ 1003(user03),20(dialout),29(audio),44(video),108(netdev),118(scanner) │
└───┴──────────────────────┴───────────────────────────────────────────────────────────────────────────────────────┘
script 03 ....etc
a vous de jouer
Dernière modification par linuxm@c (Le 04/08/2018, à 13:09)
Hors ligne
#29 Le 04/08/2018, à 12:46
- Watael
Re : Bash – affiche la liste de tous les utilisateurs et le groupe
sinon, il y a tput cols
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne