テキストファイルを繰り返してユーザーを追加します。

テキストファイルを繰り返してユーザーを追加します。

私のサーバーにユーザーとして追加したいユーザーのリスト(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。ユーザーが特定のグループに属する必要がある場合、または補助グループが必要な場合は、入力データの他の情報と一緒に-gANDを使用してください。-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

関連情報