Shell-Script
將使用者列表添加到多個組
我想編寫一個 shell 腳本,它將在 中定義的使用者列表添加
users.txt
到多個現有組中。例如,我有
a
,b
,c
,d
,e
,f
,g
將根據腳本添加到組中的使用者,並且我有p
,q
,r
,s
,t
組。以下是/etc/groups
file 的預期輸出: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,因為關聯數組在早期版本中不可用。