今天写测试脚本,临时要获取某个组内的所有用户成员,贴个脚本。
/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 "----------------------------"
第二种方法: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 "--------------------------"
发表评论