미리 정의된 비밀번호로 사용자를 생성하는 스크립트를 작성하세요.

미리 정의된 비밀번호로 사용자를 생성하는 스크립트를 작성하세요.

간단한 스크립트가 필요합니다.

name이라는 파일은 userID10개의 unixID로 구성되고, name이라는 다른 파일은 passwdfile의 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

이렇게 하면 비밀번호가 남지 않습니다.

스택 오버플로코드 생성에 약간의 도움이 됩니다.

관련 정보