複数のグループにユーザーリストを追加する

複数のグループにユーザーリストを追加する

users.txt複数の既存グループに定義されているユーザーのリストを追加するシェルスクリプトを作成したいと思います。

たとえば、スクリプトに基づいてグループに追加される、、、、、、、、aユーザーbがあり、cグループde、、、、、です。以下はファイルの予想出力です。fgpqrst/etc/groups

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

それでは、これを達成する方法は何ですか?

ベストアンサー1

最も簡単で簡単な方法は、必要な情報を含むファイルを次のように解析することです。@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を想定しています。

おすすめ記事