간단한 스크립트가 필요합니다.
name이라는 파일은 userID
10개의 unixID로 구성되고, name이라는 다른 파일은 passwd
file의 10개 unixID에 대한 10개의 비밀번호로 구성됩니다 userID
. 각 파일의 첫 번째 단어는 unixID와 해당 unixID에 해당하는 비밀번호를 나타냅니다.
특정 사용자 ID에 비밀번호를 할당하려면 두 개의 for 루프나 다른 작업을 수행해야 한다고 생각합니다.
누구든지 어떤 제안이 있습니까?
답변1
파일을 사용하시면 됩니다설명자단일 while 루프 실행으로 두 파일의 입력을 읽습니다. 예는 다음과 같습니다.
#!/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
이렇게 하면 비밀번호가 남지 않습니다.
스택 오버플로코드 생성에 약간의 도움이 됩니다.