- 论坛徽章:
- 0
|
原帖由 collegecar 於 2008-7-1 15:27 發表
用什麼命令可以查看一個組下的所有用戶啊?
多年前我有寫個 shell code 給你參考,可能看起來有點笨,但是那是 2002 年寫的。
- names=`cut -d: -f 1 /etc/passwd`
- for grpname in `cut -d: -f 1 /etc/group`
- do
- echo -n "$grpname group Users: "
- for name in $names
- do
- if groups $name | grep -E -q ":.* $grpname( |$)"; then
- echo -n "$name,"
- fi
- done
- echo -e '\b '
- done
复制代码
執行通常至少需要 30 ~ 40 秒時間....
那時候我有寫成 c++ 版本,獻醜一下 ~.~
速度很快,需要幾秒即可完成。
不過剛好我最近有學 python,我剛剛寫了一下 code,我想也單純多.
- #!/usr/bin/python
- # ==========================================================================
- #group_info ==> { gid : [ groupname , user1 , user2 ... ] }
- group_info = {}
- group_file = "/etc/group"
- g_handle = open(group_file,"r")
- for line in g_handle:
- group_name, group_passwd, group_gid, g_users = line.rstrip().split(":",4)
- s = []
- s.append(group_name)
- for u in g_users.rstrip().split(","):
- if u != "" :
- s.append(u)
- group_info[group_gid] = s
- # ==========================================================================
- #passwd_info ==> { gid : username }
- password_file = "/etc/passwd"
- passwd_info = {}
- p_handle = open(password_file,"r")
- for line in p_handle:
- user_name, user_passwd, uid, gid, left = line.rstrip().split(":",4)
- passwd_info[gid] = user_name
- # ==========================================================================
- for gid in passwd_info.keys():
- if group_info.has_key(gid):
- group_info[gid].append(passwd_info[gid])
- # ==========================================================================
- for gid in passwd_info.keys():
- s = group_info.get(gid)
- print "group %s's member:" % s[0],
- for member in s[1:]:
- print "%s," % member,
- print ""
- # ==========================================================================
- p_handle.close()
- g_handle.close()
复制代码
運作速度很快,提供給大家參考與指教。
--
[ 本帖最后由 kenduest 于 2008-7-2 03:14 编辑 ] |
|