使用Python创建Linux用户列表

时间:2015-04-09 09:46:01

标签: python linux unix

我正在用Python编写一个脚本,它将查看linux系统上的所有组和所有用户,并输出一个文件。

我的情况是,如果一个帐户在某个组中,我想自己设置用户ID(在此示例中,这是因为该帐户是非用户帐户)

以下代码:

#/usr/bin/python
import grp,pwd,os
from os.path import expanduser


destdir = expanduser("~")
destfile = '/newfile.txt'
appname = 'app name'
groupid = ''
userid = ''

#delete old feed file and create file
if os.path.exists(destdir + destfile):
        os.remove(destdir + destfile)
        print "file deleted...creating new file"
        output = open(destdir + destfile, 'w+')
        output.write('ACCOUNTID|USERLINKID|APPLICATIONROLE|APPLICATION' + '\n')
else:
        print "no file to delete...creating file"
        output = open(destdir + destfile, 'w+')
        output.write('ACCOUNTID|USERLINKID|APPLICATIONROLE|APPLICATION' + '\n')


#get user/group data for all users non primary groups
#documentation: https://docs.python.org/2/library/grp.html
groups = grp.getgrall()
for group in groups:
    groupid = group[2]
    print groupid #checking to see if group ids print correctly. Yes it does
    for user in group[3]:
        if groupid == '33': #Issue is here!
                userid = 'qwerty'
                print userid #testing var
                output.write(user + '|' + userid + '|' + group[0] + '|' + appname + '\n')

问题在于:

if groupid == '33': #Issue is here!
                userid = 'qwerty'
                print userid #testing var

变量" userid"从来没有设置它的价值,并且在测试时从不打印任何东西。

小组" 33"确实有用户并且存在。我无法弄清楚为什么这不起作用:(

我有另一段代码为用户执行此操作(因为我正在查看主要和辅助组,一旦我弄清楚这一部分,我可以修复其余部分)

1 个答案:

答案 0 :(得分:0)

您对groupid的验证是针对字符串的,它是一个整数

if groupid == 31: # then do something