python 获取用户名和group名

import os.path
import stat

def get_ugid(name, para):
	'''
	1:owner id   2:group id
	'''
	fileobj = None
	if para == 1:
		fileobj = open('/etc/passwd')
	elif para == 2:
		fileobj = open('/etc/group')
	else:
		pass

	for line in fileobj:
		if line.startswith(name + ':'):
			tmp= line.split(':')
			return tmp[2]
	return None

def modify_export_path(export_path, stat_list):
	'''stat = (src_owner, src_group, dest_owner, dest_group)'''
	pre_path = ''
	dir_list = get_dir_list(export_path)
	for index in dir_list:
		pre_path = pre_path + '/' + index
		print('pre_path='+pre_path)
		if not os.path.isdir(pre_path):
			os.makedirs(pre_path, mode=0755)
		stat_list = os.stat(pre_path)
		if stat_list.st_uid == stat_list[0]:
			os.chmod(pre_path, stat.S_ISUID(stat_list[2]))
		if stat_list.st_gid == stat_list[1]:
			os.chmod(pre_path, stat.S_ISGID(stat_list[3]))

def get_dir_list(export_path):
	rst = []
	export_path = os.path.abspath(export_path)
	if export_path == '':
		return rst
	export_path = export_path.replace('/', '\\')
	dir_list = export_path.split('\\')
	for index in dir_list:
		if index != '':
			rst.append(index)
	return rst
	

if __name__ == '__main__':
	print(get_ugid('xiangzi', 1))
	path1= '/'
	print(get_dir_list(path1))
	path1= '/abc/d'
	print(get_dir_list(path1))
	path1= '/abc/d/'
	print(get_dir_list(path1))
	path1= 'abc/d/'
	print(get_dir_list(path1))

	stat_list = (get_ugid('xiangzi', 1), get_ugid('xiangzi', 2), get_ugid('root', 1), get_ugid('root', 2))
	print(stat_list)
	export_path = ('/home/xiangzi/Code/a/b')
	modify_export_path(export_path, stat_list)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值