尝试使用 ssh 连接时提取用户组

尝试使用 ssh 连接时提取用户组

我已经提取了用户名来执行测试: w | grep ^usera | wc -l

如果有一个开放的会话,它将显示 1 usera,但现在我需要更通用的用例来提取用户组。

示例:提取用户组 ,如果group=admin,则wc -lgrp 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将查看他们是否已登录。然后计算由此输出的行数。

相关内容