id -Gn
का परिणाम उपयोगकर्ता एक या अधिक समूहों, जिसमें कई समूहों के नाम एक ही gid
करने के लिए नक्शे पोस्ट जवाब के रूप में एक ही नहीं हो सकता है के अंतर्गत आता है जब। उदाहरण के लिए अगर /etc/groups
इस के समान है:
% ypcat group | grep mygroup
mygroup:*:66485:user1,user2,user3,...
mygroup1:*:66485:user101,user102,user103,...
mygroup2:*:66485:user201,user202,user203,...
...
और उपयोगकर्ता mygroup
में सूचीबद्ध नहीं है, तो लेकिन mygroup<n>
में, id -Gn
रिटर्न mygroup
लेकिन पोस्ट जवाब देता है mygroup<n>
।
ऐसा लगता है कि मेरे पर्यावरण में, क्योंकि यूनिक्स समूहों में सैकड़ों या हजारों उपयोगकर्ता हो सकते हैं, यह एक आम समूह प्रबंधन नीति है, हालांकि मुझे नहीं पता कि प्रति समूह उपयोगकर्ता सीमा क्या है और क्यों id -Gn
हमेशा mygroup
लौटाता है ।
फिर भी, नीचे दिए गए कोड मैं id -Gn
के साथ एक मैच मिल गया के साथ:
import pwd, grp
def getgroups(user):
gids = [g.gr_gid for g in grp.getgrall() if user in g.gr_mem]
gid = pwd.getpwnam(user).pw_gid
gids.append(grp.getgrgid(gid).gr_gid)
return [grp.getgrgid(gid).gr_name for gid in gids]
कम से कम मैं उपप्रक्रिया आयात check_output से उपयोग कर सकते हैं mygroups = check_output ([ 'आईडी', '-Gn', उपयोगकर्ता])। विभाजन() –