I have a text file that has the following format:
group A:
red team: worker 1, worker 2
green team: worker 2, worker 3
Group B:
Team_Blue:worker 4, worker 2
Team_Black: worker 5, worker 6
Team_Grey: worker 6
From this text file, I want to create users and assign them to a group/team which for permission control.
I'm not sure how to go about this within a shell script, The python code snippet below shows the behaviour I'm after in the shell script.
Current attempt:
The file, usersfile.txt
, looks like:
Headers - Group : Team : User
usersfile.txt
as code block:
Group_A:Team_Red,Team_Green:worker_1,worker_2 worker_2,worker_3
Group_B:Team_Blue,Team_Black,Team_Grey:worker_4,worker_2 worker_5 worker_4,worker_6
Code:
with open("usersfile.txt") as file:
user_dict = {}
for line in file:
line = line.strip()
cols = line.split(':')
#get columns
group = cols[0]
teams = cols[1].split(',')
users = cols[2].split(' ')
#mkdir $group <--- directory created based off group name
#determine which teams a user is part of
for idx, members in enumerate(users):
for member in members.split(','):
#print(idx, group, teams[idx], member)
user_dict.setdefault(member,[]).append(teams[idx])
#Now we have users and their team, we can create a user account and assign them to a team
print(user_dict)
for user in user_dict:
print(f"ADDING USER {user} who is part of groups {user_dict[user]}")
# In shell script I would then create users
#echo " "
#echo "ADDING USER: " $user
#useradd $user -G $teams
output:
{'worker_1': ['Team_Red'], 'worker_2': ['Team_Red', 'Team_Green', 'Team_Blue'], 'worker_3': ['Team_Green'], 'worker_4': ['Team_Blue', 'Team_Grey'], 'worker_5': ['Team_Black'], 'worker_6': ['Team_Grey']}
ADDING USER worker_1 who is part of groups ['Team_Red']
ADDING USER worker_2 who is part of groups ['Team_Red', 'Team_Green', 'Team_Blue']
ADDING USER worker_3 who is part of groups ['Team_Green']
ADDING USER worker_4 who is part of groups ['Team_Blue', 'Team_Grey']
ADDING USER worker_5 who is part of groups ['Team_Black']
ADDING USER worker_6 who is part of groups ['Team_Grey']
If anyone has any suggestions on how to get this exact behavior from a shell script, im all ears.