私のサーバーにユーザーとして追加したいユーザーのリスト(userlist.txt)があります。
useraddを使用して追加し、名前をコメントとして入力したいと思います。
したがって、ファイルの各行には次の内容が含まれます。
vno572,2548,veronica norena,cornerstone group,user,4331,1872,49:46
「vno572」+「veronia norena」を取得し、次のようにユーザーを追加したいと思います。
useradd vno572 -c "veronica norena"
ファイル全体を繰り返して、各行に各ユーザーを追加する必要があります。
これまで私はこれを持っています:
cat userlist.txt | while read line
do
echo $userid
userid=’cut -d ‘,’ -f 1 userlist.txt’
echo $name
name=’cut -d ‘,‘ -f 3 userlist.txt’
useradd $userid -c “$name”
done
答え1
awk -F, 'BEGIN { OFS=FS } { print $1, $3 }' userlist.txt |
while IFS=, read username realname; do
useradd -c "$realname" "$username"
done
上記のコマンドは、awk
提供されたファイルから最初と3番目の列を選択し、カンマ区切りのユーザー名と実際の名前が続くリストを作成します。
コンマで区切られた出力を読み取り、コンマで区切ってawk
シェル変数username
に保存realname
してuseradd
呼び出します。
ユーザーを作成するときにホームディレクトリも追加したいことがよくあります。に呼び出しを追加するだけ-m
ですuseradd
。ユーザーが特定のグループに属する必要がある場合、または補助グループが必要な場合は、入力データの他の情報と一緒に-g
ANDを使用してください。-G
答え2
まだテストされていませんが、これを試してください。
cat userlist.txt|awk -F',' '{print $1" "$3}'|while read var1 var2;
do
useradd $var1 -c "$var2"
done
それがうまくいくことを願っています:)
答え3
以下のみを使用してくださいawk
。
awk -F, '{ system(sprintf("useradd %s -c \"%s\"", $1, $3)) }' userlist.txt