linux 获取组用户

linux 获取组用户

今天写测试脚本,临时要获取某个组内的所有用户成员,贴个脚本。

/etc/passwd 中用户+主组

/etc/group 中组+从用户

讲下思路:

第一种:以组名为基数,for循环用户过滤包含组名的用户

第二种:以GID为基数,过滤/etc/passwd的主用户及/etc/group中的从用户。

不要问我为什么不用id命令,id命令在确定值时很好用,如果套用脚本,输入值为纯数字时,id命令会认为是userid或gid,不能进行判断!

第一种方法:组名

#ffing组中包含哪些用户
GROUP=ffing
echo > /tmp/groupuser
for USERNAME in `cat /etc/passwd |cut -d":" -f1`
do
id $USERNAME |awk -F"=" '{print $4}'|tr "," "\n"|cut -d "(" -f2|cut -d ")" -f1 |grep "^$GROUP$" >/dev/null 2>&1
	if [  $? -eq 0 ];then
	echo "$USERNAME" >> /tmp/groupuser
	fi
done
echo "$GROUP 组中有以下用户:"
echo "----------------------------"
cat /tmp/groupuser |grep -v "^$"
echo "----------------------------"
https://qnimg.ffing.cn/wp-content/uploads/2022/01/image-32.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

第二种方法:GID

GROUP=ffing
#获取组ID
GROUPID=` cat /etc/group |awk -F ":" '{print $1 " " $3}'|grep "^$GROUP " |awk '{print $2}' `
#获取组用户
cat /etc/passwd|awk -F":" '{print $1 " " $4}'|grep " $GROUPID"|awk '{print $1}' >/tmp/groupuser
cat /etc/group|awk -F":" '{print $3 " " $4}'|grep "^$GROUPID "|awk '{print $2}' >>/tmp/groupuser

echo  " $GROUP 中有以下用户: "
echo "--------------------------"
cat /tmp/groupuser
echo "--------------------------"

good good study, day day up!

发表评论

textsms
account_circle
email

linux 获取组用户
今天写测试脚本,临时要获取某个组内的所有用户成员,贴个脚本。 /etc/passwd 中用户+主组 /etc/group 中组+从用户 讲下思路: 第一种:以组名为基数,for循环用户过滤包含组…
扫描二维码继续阅读
2022-01-23