我已经提取了用户名来执行测试:
w | grep ^usera | wc -l
如果有一个开放的会话,它将显示 1 usera
,但现在我需要更通用的用例来提取用户组。
示例:提取用户组 ,如果group=admin
,则wc -l
grp admin 中有多少用户拥有活动会话。
答案1
您可以通过 获取用户所属的组id -Gn username
。
计算管理员数量:
who | cut -d ' ' -f 1 |
while read user; do
id -Gn "$user"
done | grep -F -w "admin" | wc -l
这使用该who
命令获取已登录用户的列表,使用提取裸用户名cut
并对每个用户进行组查找。然后对各组进行 grep 查找字符串admin
并对结果进行计数。
或者,通过查看管理员是否登录来向后执行此操作:
who $( awk -F':' '$1 ~ /^admin/ { gsub(",", " ", $4); print $4 }' /etc/group ) | wc -l
命令替换中的inawk
将输出属于该组的所有用户admin
,并且who
将查看他们是否已登录。然后计算由此输出的行数。