我正在用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"确实有用户并且存在。我无法弄清楚为什么这不起作用:(
我有另一段代码为用户执行此操作(因为我正在查看主要和辅助组,一旦我弄清楚这一部分,我可以修复其余部分)
答案 0 :(得分:0)
您对groupid的验证是针对字符串的,它是一个整数
if groupid == 31: # then do something