代码

#! /usr/bin/env python
#-*- coding:utf-8 -*-
''' 概述:从/etc/passwd获取系统用户名,以列表形式返回
参数:
  f:获取系统的ftp用户名列表
  s:获取系统的ssh用户名列表
说明:
  判断依据:ftp用户是指用户id大于等于500且没有shell的用户。
           ssh用户是指用户id大于等于500且有shell的用户。
  
Create data: 2012-02-09
Version: 1.0
Author: 沈涛

'''

import pwd
import sys


# 根据参数获取系统用户名
def getUserName(UserType):
    osUser = ""

    passwd_db = pwd.getpwall()

    for entry in passwd_db:
        if entry[2] in xrange(500, 1000):   # 手工添加的用户, id介于500至1000之间
            if UserType == 's':
                if entry[-1].find('sh') >= 0:
                    username = entry[0]
                    osUser = osUser + username + ' '
            if UserType == 'f':
                if entry[-1].find('sh') < 0:
                    username = entry[0]
                    osUser = osUser + username + ' '

    return osUser.strip().replace(' ',',')


def main():
    HelpMessage = '''\
从/etc/passwd获取系统用户名,以列表形式返回。 
参数列表:
-f : 获取系统里ftp用户的列表
-s : 获取系统里ssh用户的列表
--version : 输出版本号 
--help    : 输出帮助信息
'''
    version = '1.0'
    
    # 获取程序参数  
    if len(sys.argv) < 2:  
        print HelpMessage
        sys.exit()  
  
    if sys.argv[1].startswith('--'):   
        option = sys.argv[1][2:]  
        if option == 'version':  
            print 'Version', version  
            sys.exit()  
        elif option == 'help':  
            print HelpMessage
            sys.exit()  
        else:  
            print '未知参数'  
            sys.exit()
    elif sys.argv[1].startswith('-'):
        option = sys.argv[1][1:]
        if option in ('f', 's'):
            return getUserName(option)
        else:
            print '未知参数'
            sys.exit()


if __name__ == "__main__":  
    main()
 


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐