2010-03-29 13 views
12

लिनक्स के तहत पाइथन में लिनक्स में दिया गया लॉगिन मौजूद है, उपयोगकर्ता के अस्तित्व की जांच करने का सबसे आसान तरीका क्या है, उसका लॉगिन दिया गया है?बताएं कि क्या लिनक्स

'ls ~ login-name' जारी करने और निकास कोड की जांच करने से बेहतर कुछ भी?

और यदि विंडोज के तहत चल रहा है?

उत्तर

17

यह उत्तर answer by Brian पर बनाता है। यह आवश्यक try...except ब्लॉक जोड़ता है।

चेक एक उपयोगकर्ता मौजूद:

import pwd 

try: 
    pwd.getpwnam('someusr') 
except KeyError: 
    print('User someusr does not exist.') 

चेक अगर एक समूह मौजूद है:

import grp 

try: 
    grp.getgrnam('somegrp') 
except KeyError: 
    print('Group somegrp does not exist.') 
9

यूनिक्स के तहत मेरे userid (bagnew) को देखने के लिए:

import pwd 
pw = pwd.getpwnam("bagnew") 
uid = pw.pw_uid 

अधिक के लिए pwd मॉड्यूल जानकारी देखें।

+1

यह 'बढ़ा देंगे KeyError 'अगर उपयोगकर्ता नाम नहीं मिला है। –

+1

यहाँ मिले कुछ और जानकारी: http://www.doughellmann.com/PyMOTW/pwd/ – Elifarley

+0

मैं अब आवश्यक 'कोशिश ... except' ब्लॉक के साथ एक जवाब जोड़ लिया है। –

0

मैं प्रश्न में उपयोगकर्ता नाम के लिए पार्स/etc/passwd होगा। उपयोगकर्ताओं के पास होमडिर की आवश्यकता नहीं हो सकती है।

+2

यदि यह उदा। एलडीएपी का इस्तेमाल किया जा रहा है। –

+0

+1 यह उल्लेख करने के लिए कि उपयोगकर्ताओं के पास आवश्यक रूप से गृहस्थ नहीं हो सकते हैं। वे करते हैं, यदि 'passwd' या 'छाया' एनएसएस डेटाबेस' files' उपयोग कर रहे हैं: –

+0

मैं धारणा है कि नहीं सभी/etc/पासवर्ड फ़ाइल में लिनक्स जायके की दुकान उपयोगकर्ता की जानकारी ... – Powertieke

2

pwd का उपयोग करके आप pwd.getpwall() का उपयोग कर सभी उपलब्ध उपयोगकर्ता प्रविष्टियों की एक सूची प्राप्त कर सकते हैं। यदि आप कोशिश करना पसंद नहीं करते हैं तो यह काम कर सकता है:/छोड़कर: ब्लॉक।

import pwd 

userid = "zomobiba" 
if userid in [x[0] for x in pwd.getpwall()]: 
    print "Yay" 
+2

ठीक है, लेकिन वहाँ 'पसंद करने के लिए नहीं की कोशिश ... except' ब्लॉकों कोई कारण नहीं है। यह भी की तुलना में 'getpwall' वाले सभी उपयोगकर्ता क्वेरी करने के लिए' getpwnam' के साथ एक एकल उपयोगकर्ता क्वेरी करने के लिए और अधिक कुशल है। –

0

इसी this answer लिए, मैं इस करना होगा:

>>> import pwd 
>>> 'tshepang' in [entry.pw_name for entry in pwd.getpwall()] 
True 
संबंधित मुद्दे