파일에서 운영 체제에 사용자 추가

파일에서 운영 체제에 사용자 추가

운영 체제에 사용자를 추가하는 프로젝트가 있는데 이러한 사용자는 텍스트 파일에 있습니다. 지금까지 이것을 작성했지만 작동하지 않습니다. useradd가 제대로 작동하지 않는다는 메시지가 나타납니다. 무엇이 문제인지 말해 줄 수 있나요?

파일 내용은 다음 user.txt과 같습니다.

charbel:password:1001:1001:Charbel Haddad:/home/charbel:/bin/bash:0:30:15:7:y
assil:p@ssw0rd:1002:1002:Assil:/home/assel:/bin/bash:0:30:10:5:n
marwan:p@ssw0rd:1003:1003:Marwan Ghantous:/home/marwan:/bin/bash:0:50:30:7:n
michel:password:1004:1004:Michel:/home/michel:/bin/bash:1:30:10:5:y

스크립트:

FILE="user.txt"

USERNAME=$(cut -d ":" -f 1 $FILE)
PASSWORD=$(cut -d ":" -f 2 $FILE)
USER_ID=$(cut -d ":" -f 3 $FILE)
GROUP_ID=$(cut -d ":" -f 4 $FILE)
USER_INFO=$(cut -d ":" -f 5 $FILE)
HOME_DIRECTORY=$(cut -d ":" -f 6 $FILE)
SHELL=$(cut -d " " -f 7 $FILE)
MIN=$(cut -d ":" -f 8 $FILE)
MAX=$(cut -d ":" -f 9 $FILE)
INACTIVE=$(cut -d ":" -f 10 $FILE)
WARNING=$(cut -d ":" -f 11 $FILE)

useradd -m -c "${USERNAME}" "${PASSWORD}" "${USER_ID}" "${GROUP_ID}" "${USER_INFO}" "${HOME_DIRECTORY}" "${SHELL}" "${MIN}" "${MAX}" "${INACTIVE}" "${WARNING}"

답변1

이 질문은 숙제/과제처럼 보이므로 여기서는 완전한 솔루션을 보여주지 않습니다.

거의 같은 문제가 있습니다https://stackoverflow.com/q/65303035/10622916.

문제의 스크립트는 입력 파일의 개별 줄을 처리하지 않습니다. 각 주기마다 하나의 행을 읽고 처리하는 루프가 필요합니다.

질문에 사용된 명령은 cut지정된 열의 모든 값을 변수에 할당합니다(예: 공백으로 구분된 모든 사용자 이름).

USERNAME="charbel assil marwan michel"

한 줄만 처리하는 경우 여러 cut명령을 사용하면 효과가 있지만 비효율적입니다.

파일을 한 줄씩 처리하고 입력 필드를 개별 변수에 할당하는 방법에 대한 예는 다음을 참조하세요.https://mywiki.wooledge.org/BashFAQ/001. 콜론으로 구분된 필드를 처리하는 방법과 입력에 필요한 것보다 더 많은 필드가 포함될 수 있는 경우 수행할 작업에 대한 몇 가지 예가 있습니다.

관련 정보