簡単なスクリプトが必要です。
nameというファイルはuserID
10個のunixIDで構成され、nameという他のファイルはpasswd
fileの10個のunixIDの10個のパスワードで構成されていますuserID
。各ファイルの最初の単語は unixID とその unixID に対応するパスワードを表します。
特定のユーザーIDにパスワードを割り当てるには、2つのforループまたは別の操作を実行する必要があると思います。
誰でもどんな提案がありますか?
答え1
ファイルを使用してください記述子単一のwhileループ実行で2つのファイルの入力を読み込みます。例は次のとおりです。
#!/bin/bash
# Assign file descriptors to users and passwords files
exec 3< users.txt
exec 4< passwords.txt
# Read user and password
while read iuser <&3 && read ipasswd <&4 ; do
# Just print this for debugging
printf "\tCreating user: %s with password: %s\n" $iuser $ipasswd
# Create the user with adduser (you can add whichever option you like)
adduser $iuser
# Assign the password to the user, passwd must read it from stdin
echo $ipasswd | passwd --stdin $iuser
done
passwd
でパスワードを読み込むように求める方法に注意してくださいstdin
。ファイルが存在するか、ユーザー名にスペースがないか、ユーザーがシステムにまだ存在していないかなどを確認するなど、上記のコードに多くの完全性チェックを追加する必要があるかもしれません。両方のファイル名を入力パラメータとして受け入れるスクリプト。
この回答スタックオーバーフローに非常に便利です。
答え2
私があなたなら、単にunixID、パスワードを含むcsvを作成してから
while IFS=',' read -ra VARARRAY; do
#The userid would be $VARARRAY[0] and passwd would be $VARARRAY[1]
#Create user with distro's preferred method here.
done
それを実行して動的に維持するには
cat newusers | ./createNewUsers.sh
後で行うことができます
rm newusers
これによりパスワードが残りません。
スタックオーバーフローコード生成に少し役立ちます。