Shell-Script

將使用者列表添加到多個組

  • August 5, 2016

我想編寫一個 shell 腳本,它將在 中定義的使用者列表添加users.txt到多個現有組中。

例如,我有a, b, c, d, e, f,g將根據腳本添加到組中的使用者,並且我有p, q, r, s,t組。以下是/etc/groupsfile 的預期輸出:

p:x:10029:a,c,d
q:x:10030:b,c,f,g
r:x:10031:a,b,c,e
s:x:10032:c,g
t:x:10033:a,b,c,d,e

那麼如何實現呢?

最好和最簡單的方法是使用@DannyG 建議的所需資訊解析文件。雖然這是我自己做的方式,但另一種方式是在腳本中硬編碼使用者/組組合。例如:

#!/usr/bin/env bash

## Set up an indexed array where the user is the key
## and the groups the values.
declare -A groups=(
   ["alice"]="groupA,groupB" 
   ["bob"]="groupA,groupC" 
   ["cathy"]="groupB,groupD"
)

## Now, go through each user (key) of the array,
## create the user and add them to the right groups.
for user in "${!groups[@]}"; do 
   useradd -U -G "${groups[$user]}" "$user" 
done

**注意:**以上假設 bash 版本 >= 4,因為關聯數組在早期版本中不可用。

引用自:https://unix.stackexchange.com/questions/145029