users.txt
複数の既存グループに定義されているユーザーのリストを追加するシェルスクリプトを作成したいと思います。
たとえば、スクリプトに基づいてグループに追加される、、、、、、、、a
ユーザーb
があり、c
グループd
がe
、、、、、です。以下はファイルの予想出力です。f
g
p
q
r
s
t
/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を想定しています。